使用jQTouch时,我无法通过mailto链接从Mobile Safari打开Mail应用程序。可能有什么不对?

时间:2010-02-23 10:48:43

标签: html iphone jqtouch mailto

我正在使用jQTouch开发一个iPhone网络应用程序,它包含一个指向有效电子邮件地址的简单mailto:链接,该地址应该在点按时启动iPhone邮件应用程序,但它不会

如果我在Mobile Safari中访问包含完全相同链接的“普通”网页,并点按它,我会得到预期的结果:邮件应用程序会在“收件人”字段中弹出正确的电子邮件地址。

这是链接HTML(地址已更改)以防万一我疯了并犯了一个愚蠢的错误,但看起来非常好:

<p><a href="mailto:info@mycompany.com">info@mycompany.com</a></p>

使用jQTouch时有没有人遇到过这种情况?或者至少有人建议我可以调试这个方法吗?当我点击非工作链接时,它闪烁红色(活动链接状态),绝对没有其他事情发生。

5 个答案:

答案 0 :(得分:7)

我发现将target="_blank"添加到链接工作 - 除了在某些桌面浏览器上,它打开了一个新的空白窗口并打开了电子邮件窗口。当然,jqtouch网站通常不会在桌面浏览器上查看,但我不喜欢这种行为。

相反,这就是我所做的:

  • mailto:个链接放在onclick个活动中,并添加了返回false(因此#的实际链接无法启动)
  • 在链接
  • 中添加了noHighlight课程

以下是一个例子:

<a href="#" onclick="window.location='mailto:email@domain.com'; return false;" class="noHighlight">Email me</a>

然后我修改了主题文件中的CSS。

在:

ul li a.active {
   background: #194fdb url(img/selection.png) 0 0 repeat-x;
   color: #fff;
}

后:

ul li a.active:not(.noHighlight) {
   background: #194fdb url(img/selection.png) 0 0 repeat-x;
   color: #fff;
}

我添加noHighlight类的原因是没有它,按钮会突出显示并“粘住”,这使得按钮看起来仍处于某种活动状态。为了解决这个问题,我添加了类并修改了CSS,如上所述。

CSS更改的作用是,如果链接(位于li内的ul内部)具有类noHighlight,则不会更改背景或文本颜色。

现在似乎在桌面和移动浏览器上都能很好地工作。

答案 1 :(得分:5)

我再次查看了jQTouch演示包中的示例代码,发现他们正在为其电子邮件链接添加target="_blank"属性。

我这样做了我的链接,它开始工作(弹出邮件客户端窗口)。但是,标准网页中的链接也可以正常工作,但没有 target="_blank"属性......

我很困惑,但如果您的移动页面使用的是jQTouch,那么添加该属性似乎可以解决此问题。

答案 2 :(得分:2)

只有target =“_ blank”才能正常工作。

对于那些(像我这样)每次点击 mailto tel 链接时发现“这将在新页面中打开”弹出窗口的人很烦人你可以这样做:

编辑jqtouch.js并转到第284行:

if ($el.attr('target') == '_blank' || $el.attr('rel') == 'external')

现在将此行替换为:

if ($el.attr('target') == '_self' || $el.attr('target') == '_blank' || $el.attr('rel') == 'external')

在HTML(例如)上:

<a href="tel:+351912345678">Call me</a>

变为

<a target="_self" href="tel:+351912345678">Call me</a>

答案 3 :(得分:2)

这与jQTouch无关,但是mailto:links对我来说也不起作用并修复它们,我所要做的只是在冒号后添加斜杠。

mailto://info@mycompany.com

这里有想法:http://mobiledevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html。奇怪的是,电话链接对我没有任何影响。

答案 4 :(得分:1)

很棒的发现,我做同样的事情,直到最近才明白为什么。如果您在jqtouch.js rev 109中查看第161和284行,您会看到目标属性“_Blank”将阻止jqtouch劫持您的点击事件。它正在拦截事件,因为这是从一个页面移动到另一个页面的主要机制。