I can't get mailto links to open the Mail app from Mobile Safari when using jQTouch. What could be wrong?

时间秒杀一切 提交于 2019-11-29 03:53:59
Travis

I found that adding target="_blank" to the links worked -- except that on some desktop browsers, it opened a new blank window AND opened the email window. Granted, jqtouch sites aren't typically going to be viewed on desktop browsers, but I wasn't fond of that behavior.

Instead, here's what I did:

  • Put the mailto: link in the onclick event and added return false (so actual link to # doesn't fire)
  • Added a noHighlight class to the link

Here is an example:

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

I then modified the CSS in the theme file.

Before:

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

After:

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

The reason I added the noHighlight class is that without it, the button would get highlighted and would "stick" which made the button look like it was still in some active state. To get around the issue, I added the class and modified the CSS as described above.

What the CSS change does is that if the link (inside of a li which is inside of a ul) has the class noHighlight, it will NOT change the background or text color.

Seems to work great now on both desktop and mobile browsers.

I looked again at the example code in the jQTouch demo package and saw that they were adding a target="_blank" attribute to their email link.

I did this to my link, and it began working (popping up the mail client window). However, the link that's in a standard web page works as well, but without the target="_blank" attribute...

I'm puzzled, but adding that attribute seems to solve this problem if your mobile page is using jQTouch.

This isn't related to jQTouch, but mailto: links weren't working for me either and to fix them, all I had to do was add slashes after the colon.

mailto://info@mycompany.com

Got the idea to do this here: http://mobiledevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html. Strangely enough, telephone links worked fine for me without the slashes.

deltas4

It works fine just with target="_blank".

For those (like me) who find it annoying to get the "This will open in a new page" popup every time you tap on a mailto or tel link you can do this:

Edit jqtouch.js and go to line 284:

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

Now replace this line by:

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

And on the HTML (e.g.):

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

becomes

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

Excellent find, I'm doing the same thing and couldn't understand why until recently. If you look round line 161 and 284 in jqtouch.js rev 109 you see that the target attribute "_Blank" will keep jqtouch from hijacking your click event. It is intercepting the event because that is the primary mechanism to move from page to page.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!