2013-02-02 68 views
2

我有一個javascript確認對話框彈出,但是當我點擊'取消'時,然後在對話框關閉後點擊屏幕上的任何地方,對話框再次彈出。它只發生一次額外的時間,然後你可以再次點擊頁面而不彈出對話框。iPhone Javascript確認對話框錯誤

我只在運行iOS 5.0.1的iPhone/iPad上看到這一點。我沒有iOS 6設備,所以我不確定它在那裏發生。

下面是我使用的代碼:

$(bpm.remoteAppDivName).on('tap', 'a.delete-pending-payment', function(event) { 

    if (isJQMGhostClick(event)) { return false; } 

    var deleteGlobalPaymentURL = $(this).attr('href'); 

    var confirmMsg = confirm ("Are you sure you want to do that?"); 

    if (confirmMsg === true){ 

     window.location = '/index.htm'; 

    } 
    event.preventDefault(); 
    return false; 

}); 

var lastclickpoint, curclickpoint; 
var isJQMGhostClick = function(event){ 
    curclickpoint = event.clientX+'x'+event.clientY; 
    var ret=false; 
    if (lastclickpoint === curclickpoint) { 
     ret=true; 
    } else { 
     ret=false; 
    } 
    lastclickpoint = curclickpoint; 
    return ret; 
} 

這裏的問題頁面的鏈接:http://www.5280skateparks.com/dev/confirmBug.htm

任何幫助將非常感激。

更新:我剛剛證實它也發生在iOS 6.0.1上。

回答

0

這是jQuery Mobile的「鬼點擊」在一些細節herehere討論。在論壇頁面,溶液中提出的,這是我的小bug修復轉載如下:

var lastclickpoint, curclickpoint; 
var isJQMGhostClick = function(event){ 
    curclickpoint = event.clientX+'x'+event.clientY; 
    var ret=false; 
    if (lastclickpoint === curclickpoint) { 
     ret=true; 
    } else { 
     ret=false; 
    } 
     lastclickpoint = curclickpoint; 
    return ret; 
} 

我稍微修改這個代碼並不總是指望一對點擊。此功能現在可以在0點重影和2點以上點擊的情況下正常工作。您可以通過在抽頭處理程序開始時檢查isJQMGhostClick(event)並在isJQMGhostClick函數返回true時忽略事件來使用它。

+0

感謝您的快速響應。我會在星期一上午首先嚐試一下你的解決方案並回報。週末愉快。 – haddnin

+0

我實施了您的解決方案,並且遇到同樣的問題。我想知道這是否確實是上面提到的「鬼點擊」,或者我錯誤地實現了它。 您可以在此處看到問題仍然存在:http://www.5280skateparks.com/dev/confirmBug.htm 我編輯了原始帖子以包含您的建議解決方案。 – haddnin

+0

你可以嘗試'返回false'而不是在鬼點擊檢查中返回,並在preventDefault後添加一個返回false? –