簡體   English   中英

帶有tel的錨標記上的preventDefault無效:

[英]preventDefault on anchor tag with tel: doesnt work

當用戶單擊電話號碼時,它在台式機上不應該執行任何操作,而在移動電話上,它應呼叫該號碼。 我認為解決方案就像在台式機上返回false或preventDefault一樣簡單,但到目前為止它似乎不起作用:

<a href="tel:555555">555-555</a>

我正在使用mouseup()以便僅在桌面上阻止它。 該功能運行,但瀏覽器仍嘗試打開另一個應用程序。

$('a[href^="tel"]').mouseup(function (e) {
    e.preventDefault();
    return false;
})

是否有像這樣實際可行的簡單解決方案,或者是檢測移動設備並更改href屬性的最佳方法?

感謝下面的答案。 mouseup()運行,但不能阻止Default。 這是使用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 ...
});

嘗試像

function callMethod(){
  //do stuff here
}
$('a[href^="tel"]').on('click',function (e) {
    e.preventDefault();
    callMethod();
})

$('a[href^="tel"]').on('touchstart',function (e) {
    callMethod();
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM