移动Safari和jQuery事件,没有什么是射击?
好的,所以我有一个用HTML5 / JavaScript编写的应用程序,用于内置汽车装置。 这是一个“单页”的应用程序,在主页面上为了响应不同的事件而将片段加载到div中。
我被要求将其移植到浏览器,以便它可以用于市场营销,演示等等。
这看起来不是什么大事,因为几乎没有什么适应,只需要调整一些CSS,以便它可以在所有浏览器中显示相同。 然后,他们决定他们想要运行webapp的设备将是一个iPad。
该应用程序在Safari中效果很好,所以我不认为我会在移动Safari中遇到任何问题。 立即意识到,情况并非如此。 在移动Safari浏览器中该应用程序根本不起作用! 基本上,我的点击事件都没有发射。 最重要的是,我的控制台中出现了不一致的错误消息,这些消息在任何其他浏览器中都没有显示出来。
TypeError: 'null' is not an object
围绕这个网站,我看到有关jQuery绑定工作和Mobile Safari的报告有冲突,哪些不支持。 所以我决定build立我自己的实验。
使用单个链接创build页面:
<a class="mylink">CLICK ME</a>
然后我尝试了这些绑定中的每一个:
$("a.mylink").click(function () { console.log("click worked"); }); $("a.mylink").bind("click", function () { console.log("bind worked"); }); $("a.mylink").live("click", function () { console.log("live worked"); }); $("a.mylink").on("click", function () { console.log("on worked"); });
唯一一个在控制台中得到任何响应的是.live()。 即使如此,这是非常不一致的,通常涉及点击发送垃圾邮件。
如果我编辑我的链接,并像这样添加一个onclick属性:
<a onclick="function(){}" class="mylink">CLICK ME</a>
然后.live()工作一致,但没有其他绑定仍然。 这似乎是疯了,因为这么多的应用程序在移动Safari上运行就好了。 有什么明显的我在这里失踪?
请注意,我知道如何使用jQuery之前,任何人都问,我的绑定是在$(document).ready()。
此外,我知道链接工作得很好,一旦一个href附加到他们,但显然不是我所需要的,因为这是一个单页导航应用程序,附加一个href似乎忽略任何绑定完全在iOS中,并导致完整页面导航。
你必须添加一个href="#"
或者把cursor:pointer
被点击的元素。
这是一个testing(在iPad 3中): http : //jsfiddle.net/dZqyU/2/
<a class="clickable">I have no href :( (I dont work in iPad)</a> <br/> <br/> <a class="clickable" href="#">I have href :) (I work in iPad)</a> <br/> <br/> <a class="clickable cursor">I have cursor, no href :) (I work in iPad)</a>
$(document).on('click','.clickable',function(){ alert($(this).text() + 'and the binding worked :)'); });
.cursor{ cursor:pointer; }
我猜这个问题就像a
没有href
属性a
锚标签,在某些iOS Safari版本中没有被识别为可点击的元素。 但是,如果我们明确地通过添加href
或者添加一个游标pointer
来使它们可以clickable
, 这是一个相关的链接 。
以前的答案是不正确的。 我testing了一下,并且能够实现你正在尝试实现的内容,而不使用内联JavaScript,只使用绑定在iPhone上。 我的猜测是你在某个地方有些小错字,而且由于jQuery的优雅降级能力,所以没有任何错误被调用。
有一件事你可以尝试,假设我所说的错误是不正确的,就是将href =“#”添加到你的锚点,然后使用event.preventDefault()[你也可能需要添加event.stopImmediatePropagation ()]到您的代码。
您的代码中可能存在一个错误(可能在某处完全不同,并且不相关),桌面Safari很适合为您find并忽略或修复,但移动Safari对我的体验要求不那么宽容。
- PhoneGap iOS无法使用HTML 5播放video
- 确定照片在JavaScript中的方向?
- cordovaiOS 9上的WKWebView状态?
- 如何在iOS上的<input type = date>上注册值更改事件
- html input type = file – 从iCloud中select一个文件
- html5 + js:<input type = file capture = camera>的分辨率或大小
- VideoJS:不在IOS上工作
- 使用iOS和Android的HTML 5文件input
- Mobile Safari和HTML5 iOSnetworking应用程序支持哪些audio文件types(例如,mp3,ogg)?