我在网页上有一个表单,其中的操作是“mailto:email”(其中电子邮件是真实的电子邮件地址)。当我在常规模式下在Mobile Safari中加载此页面时(即,没有从具有应用程序功能模式的主屏幕启动),这很好 - 在我提交表单后,电子邮件应用程序出现了。但是,当我处于应用程序模式并从主屏幕启动时(因此,没有Safari chrome),并提交表单我收到错误“URL无法显示”。但是,在具有应用程序功能的模式下,常规mailto:链接(即不在表单中) 可以正常工作。
有没有人注意到这个?任何解决方法?在支持应用程序的模式下是否禁止使用表单?
谢谢,
伊丽莎白
答案 0 :(得分:3)
这准确地描述了这个问题。 mailto链接没有任何问题,mailto链接无法加载。通常,webapp会崩溃。
有趣的是tel:电话号码的链接工作正常。
window.location.replace确实可以正常工作。谢谢!
以下是自动修复此问题的jQuery ...
$('a[href^=mailto]').click(function (event) {
event.preventDefault();
window.location.replace = $(this).attr('href');
return false;
});
答案 1 :(得分:0)
我想我已经弄明白了。我注意到,当处于应用程序模式时,任何http链接都会将您带出应用程序并启动一个单独的移动safari窗口,带您进入该页面并显示Safari chrome。有道理(通常一个人不会链接到“一体化”应用程序功能的网络应用程序中的任何内容。我注意到这一点,因为我实现了一个4页应用程序,底部有我自己的“标签栏”,并且正在连接。在a元素中使用普通http链接的html文件。当我用javascript函数替换它以使用document.location.replace加载页面时,这不会发生。
所以,在表单上 - 我认为必须发生的是因为我正在使用一个方案(在这种情况下,mailto :)以某种方式在“常规模式”中需要浏览器来解释方案并做正确的事情启动电子邮件应用程序的事情,这在提交表单时显然不起作用。我还没有在Apple文档中发现任何具体的内容,所以如果有人知道技术细节,请发帖!
更新:我确实发现我可以在网络应用模式下使用表单访问服务器端脚本,所以我仍然对mailto:问题感到好奇,如果有人有答案的话。
谢谢,
伊丽莎白
答案 2 :(得分:0)
我遇到了与在web功能模式下无法正常工作的mailto链接完全相同的问题。我刚刚完成向Apple提交错误报告。让我们看看会发生什么,同时我找到了另一个开发者。在支持Web的模式和mailto链接工作的Web应用程序的平台工作,但它在这方面的工作方式很有趣 - 它不像Safari中那样流畅。因为即使在我找到的这个新的web开发工具中,它也会关闭你的应用程序并启动邮件客户端,这是蹩脚的。在Safari中,它只是在邮件窗口中滑动,如果您点击取消或发送,它会滑回 - 它实际上并没有关闭您的应用程序。
答案 3 :(得分:0)
这是一种不依赖于JQuery的解决方法:
aTmp = document.createElement("a");
aTmp.href="mailto:example@example.com?subject=Test&body=Hello.";
aTmp.click();
更新:要从书签中运行此代码,您必须等待1000 ms
才能关闭书签屏幕并且浏览器已准备好响应。我通过将代码包装在setTimeout
函数中来实现这一点。