当用户点击一个电话号码时,它应该在桌面上不执行任何操作,而在移动设备上它应该调用该号码。我认为解决方案就像在桌面上返回 false 或 preventDefault 一样简单,但到目前为止它似乎不起作用:
<a href="tel:555555">555-555</a>
我正在使用 mouseup()
这样它只会在桌面上阻止它。该函数运行但浏览器仍尝试打开另一个应用程序。
$('a[href^="tel"]').mouseup(function (e) {
e.preventDefault();
return false;
})
是否有像这样简单且实际有效的解决方案,或者是检测移动设备并更改其他问题中看到的 href 属性的最佳方法?
解决方案
感谢下面的回答。 mouseup()
运行但无法阻止默认。这是使用 modernizr 的最终代码:
$('a[href^="tel"]').on('click',function (e) {
if ($("html").hasClass("no-touch")) {
e.preventDefault();
}
});
最佳答案
你可以这样做:
$('.no-touch a[href^="tel"]').on('click',function (e) {
e.preventDefault();
});
如果您需要它在触摸设备上工作,并且正在使用 Modernizr(看起来像),您可以改为这样做:
$('a[href^="tel"]').on('click',function (e) {
if (!Modernizr.touch) {
e.preventDefault();
}
... my touch code ...
});
关于javascript - 使用 tel : doesnt work 防止 anchor 标记上的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086176/