在运行我正在构建的 HTML5 主屏幕应用程序的 iOS6 iPad2 上也遇到了这个问题。简而言之,iOS 或 JQuery/JQueryMobile(我目前使用的)中似乎存在一个错误。经过一个小时的故障排除后,我发现:
event.target [在您的示例中为 $(this)] 在 Safari 或全屏主页应用程序中返回的 href 有时会返回 #,有时会返回正确的 href。
它返回我期望的href的时间很少而且相距甚远,但是模式似乎是,如果您在a标签文本附近的图像底部进行清理(假设您将图像中的文本放在a标签中。然后它有时会返回href。
所以我尝试了很多东西,无论我尝试什么,在带有 JQM 的 iPad 上获得的 href 值都是不一致的。所以我所做的(至少现在)是在 a 标签中添加了data-href标记。因此,例如,我有以下标记(带有一些伪标记)
<div>
<a href="./home.hmtl" data-href="./home.html" data-ajax=false data-transistion=none"><img {YOUR IMAGE INFO HERE!} /></a><br/> Label-Text-Under-Image
</div>
然后在 JavaScript 中,我可以简单地执行以下任一操作:
$(this).attr('data-href') 就像在你的例子中一样,虽然我没有用你的例子测试它,或者我所做的是以下内容以影响所有我页面中的标签(这是我想做的)
$(document).on(
"click",
"a",
function (event) {
if (event.target instanceof HTMLImageElement) {
var aUrl = $(event.target).parent().attr("data-href");
if (typeof aUrl != 'undefined') {
event.preventDefault();
alert(aUrl);
window.location = aUrl;
}
}
}
);
就我而言,真正的魔力是:
$(event.target).parent().attr("data-href");
我在哪里得到了在桌面和 iPad 上始终正确返回的 data-href。当然,在我的最终版本中,我删除了警报呼叫,但这就是让我在带有 JQM 的 iPad 上工作的原因,并允许我阻止我的主屏幕应用程序启动 Safari。顺便说一句,我正在使用 JQM 1.1.0,因为我没有机会获得最新的……不确定他们是否在较新的版本中对其进行了修复。