Javascript 带有tel:的锚定标记上的preventDefault不起作用
当用户点击一个电话号码时,它不应该在桌面上做任何事情,而应该在手机上拨打该号码。我原以为解决方案简单到在桌面上返回false或preventDefault,但到目前为止似乎不起作用:Javascript 带有tel:的锚定标记上的preventDefault不起作用,javascript,jquery,Javascript,Jquery,当用户点击一个电话号码时,它不应该在桌面上做任何事情,而应该在手机上拨打该号码。我原以为解决方案简单到在桌面上返回false或preventDefault,但到目前为止似乎不起作用: <a href="tel:555555">555-555</a> 有没有一个像这样简单的解决方案能够真正起作用,或者是检测mobile并更改href属性的最佳方法,如其他问题所示 解决方案 感谢下面的答案mouseup()运行,但无法防止默认设置。这是使用Modernizer的最终代码:
<a href="tel:555555">555-555</a>
有没有一个像这样简单的解决方案能够真正起作用,或者是检测mobile并更改href属性的最佳方法,如其他问题所示
解决方案
感谢下面的答案mouseup()
运行,但无法防止默认设置。这是使用Modernizer的最终代码:
$('a[href^="tel"]').on('click',function (e) {
if ($("html").hasClass("no-touch")) {
e.preventDefault();
}
});
试着
function callMethod(){
//do stuff here
}
$('a[href^="tel"]').on('click',function (e) {
e.preventDefault();
callMethod();
})
$('a[href^="tel"]').on('touchstart',function (e) {
callMethod();
})
您可以这样做:
$('.no-touch a[href^="tel"]').on('click',function (e) {
e.preventDefault();
});
如果您需要它在触摸设备上工作,并且正在使用Modernizer(看起来是这样),您可以这样做:
$('a[href^="tel"]').on('click',function (e) {
if (!Modernizr.touch) {
e.preventDefault();
}
... my touch code ...
});
啊,是的,我完全可以做到。稍微干净一点。@DustinSilk,使用此方法,您需要为移动设备使用另一个功能。@BhojendraNepal如果它启用了触摸功能,那么我们不会阻止默认设置,它将继续正常从href调用外部电话应用程序。在触摸屏和桌面设备上单击事件触发
$('a[href^="tel"]').on('click',function (e) {
if (!Modernizr.touch) {
e.preventDefault();
}
... my touch code ...
});