我正在使用jQTouch开发一个iPhone网络应用程序,它包含一个指向有效电子邮件地址的简单mailto:
链接,该地址应该在点按时启动iPhone邮件应用程序,但它不会
如果我在Mobile Safari中访问包含完全相同链接的“普通”网页,并点按它,我会得到预期的结果:邮件应用程序会在“收件人”字段中弹出正确的电子邮件地址。
这是链接HTML(地址已更改)以防万一我疯了并犯了一个愚蠢的错误,但看起来非常好:
<p><a href="mailto:info@mycompany.com">info@mycompany.com</a></p>
使用jQTouch时有没有人遇到过这种情况?或者至少有人建议我可以调试这个方法吗?当我点击非工作链接时,它闪烁红色(活动链接状态),绝对没有其他事情发生。
答案 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劫持您的点击事件。它正在拦截事件,因为这是从一个页面移动到另一个页面的主要机制。