0

我有一个网络应用程序,一旦用户将其添加到他们设备的主屏幕上,我想将其显示为独立的。我一直在 iPhone 5 上进行测试。我使用元标记使其显示为 Web 应用程序,并使用一些 jQuery 来处理点击事件,将所有链接保持在独立设备中并防止它们启动 Mobile Safari。这一切都很好,很简单,直到我尝试将一些无聊的文本链接变成图像链接。preventDefault() 操作似乎无法处理图像链接,并且总是返回“在此服务器上未找到请求的 URL /undefined。”,而文本链接和标准表单按钮工作得很好。这是学校合作项目的一部分,我们需要它有一个时髦的界面,图片链接是其中的重要组成部分。

这是我必须处理链接的简单 js:

$( document ).on(
    "click",
    "a",
    function( event ){
       event.preventDefault();  
       location.href = $( event.target ).attr( "href" );
    }
);

按钮 HTML 如下所示:

<div id="loginBtn"><a href="memberLogin.php"><img src="CSS images/0-btn1.png" width="224" height="113" /></a></div>

任何建议将不胜感激。

4

2 回答 2

0

某些事件从目标元素通过每个父节点冒泡,直到它们到达文档的顶部(或 iOS 中的正文)——因此,如果您在文档级别处理它们,效率会非常低。委托事件处理程序适用于动态生成的内容,因此您可以在创建处理程序时将处理程序附加到 DOM 中最近的父级。在您的情况下(假设您的 a 标签都不是动态生成的),您可以这样做$('a').on(...)

保存到主屏幕后,您还需要使用event.stopPropagation();防止应用程序在移动 Safari 中打开。

于 2012-10-11T06:12:24.217 回答
0

现在,使用图像而不是只有一个元素a会产生两个元素aimg。所以我认为这与事件传播PreventDefault 有关。实际上 preventDefault 仅阻止默认操作,但不会停止其传播。看看这些链接,它们肯定会帮助你。

于 2012-10-11T06:14:09.817 回答