我有一个用 HTML5/JavaScript 编写的用于仪表板汽车单元的应用程序。它是一个“单页”应用程序,将片段加载到主页上的 div 中以响应不同的事件。
我被要求将它移植到浏览器上,以便它可以用于营销、演示等。
这似乎没什么大不了的,因为几乎没有什么要适应的,只需要调整一些 CSS 以便它可以在所有浏览器中显示相同。然后,他们决定要在其上运行 Web 应用程序的设备是 iPad。
该应用程序在 Safari 中运行良好,所以我认为 Mobile Safari 不会有任何问题。立刻意识到事实并非如此。该应用程序在 Mobile Safari 中根本无法运行!基本上,我的点击事件都没有触发。最重要的是,我在控制台中收到不一致的错误消息,这些消息不会出现在任何其他浏览器中。
类型错误:'null' 不是对象
浏览这个站点,我看到关于 jQuery 绑定工作和 Mobile Safari 以及哪些不工作的相互矛盾的报告。所以我决定建立自己的实验。
使用单个链接创建页面:
<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() 始终如一地工作,但仍然没有其他绑定。这对我来说似乎很疯狂,因为很多应用程序都可以在 Mobile Safari 上运行。我在这里有什么明显的遗漏吗?
注意,我知道如何使用 jQuery,所以在有人问之前,是的,我的绑定在$(document).ready()
.
另外,我知道链接一旦附加了href就可以正常工作,但这显然不是我需要的,因为这是一个单页导航应用程序,并且附加href似乎完全忽略了iOS中的任何绑定并导致完整页面导航。