5

我在网页中有一个表单,其操作是“mailto:email”(其中电子邮件是一个真实的电子邮件地址)。当我在 Mobile Safari 中以常规模式加载此页面时(即,不是从具有应用功能模式的主屏幕启动),这工作正常 - 在我提交表单后,电子邮件应用程序出现。但是,当我处于应用程序模式并从主屏幕启动(因此,没有 Safari 浏览器)并提交表单时,我收到错误“无法显示 URL”。但是,常规的 mailto: 链接(即,不在表单中)在 app-capable 模式下确实有效。

有没有其他人注意到这一点?任何解决方法?应用程序模式是否不允许使用表单?

谢谢,

伊丽莎白

4

4 回答 4

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;
});
于 2010-03-18T15:28:20.580 回答
0

我想我已经想通了。我注意到在应用程序模式下,任何 http 链接都会将您带出应用程序并启动一个单独的移动 safari 窗口,带您到页面并显示 Safari 浏览器。有道理(通常不会链接到“一体式”支持应用程序的 Web 应用程序中的任何内容。我注意到这一点是因为我实现了一个 4 页应用程序,底部有我自己的“标签栏”,并且在 .在 a 元素中带有纯 http 链接的 html 文件。当我用 javascript 函数替换它以使用 document.location.replace 加载页面时,不会发生这种情况。

所以,在表格上 - 我认为必须发生的事情是因为我正在使用一个方案(在这种情况下,mailto :) 以某种方式需要浏览器以“常规模式”来解释该方案并通过启动来做正确的事情电子邮件应用程序,这在提交表单时显然不起作用。我还没有在 Apple 文档中找到任何关于此的具体内容,所以如果有人知道技术细节,请发帖!

更新:我确实发现我可以在网络应用程序模式下使用表单访问服务器端脚本,所以我仍然对 mailto: 问题感到好奇,如果有人有答案的话。

谢谢,

伊丽莎白

于 2009-12-23T21:53:42.387 回答
0

我遇到了同样的问题,mailto 链接无法在支持网络的模式下工作。我刚刚完成向 Apple 提交错误报告。让我们看看会发生什么,同时我找到了另一个开发者。Web 应用程序平台,在支持 Web 的模式下工作,并且 mailto 链接工作,但有趣的是它在这种情况下是如何工作的——它不像在 Safari 中那样流畅。因为即使在我发现的这个新的网络开发工具中,它也会关闭你的应用程序并启动邮件客户端,这很糟糕。在 Safari 中,它只是在一个邮件窗口中滑动,如果你点击取消或发送,它会滑出——它实际上并没有关闭你的应用程序。

于 2010-01-27T22:43:16.080 回答
0

这是一个不依赖于 JQuery 的解决方法:

aTmp = document.createElement("a");
aTmp.href="mailto:example@example.com?subject=Test&body=Hello.";
aTmp.click();

更新:要从书签运行此代码,您必须1000 ms在书签挡板关闭并且浏览器准备响应之前等待。我通过将代码包装在一个setTimeout函数中来实现这一点。

于 2015-03-20T16:01:37.067 回答