2014-04-10 71 views
0

我需要檢查用戶是否關閉了瀏覽器。沒有可靠的方法,但最準確的方法似乎使用onbeforeunload並檢查鏈接或按鈕是否被點擊。我也將加入F5和其他一些額外的檢查Jquery .on('click','button'not working

但是我有一個按鈕問題,如果我按一下按鈕,AJAX的通話將被製成即使if(window.link_was_clicked==false)條件

<button onclick="setLocation('http://dev.site.com/checkout/')" class="button" title="Checkout" type="button"><span><span>Checkout</span></span></button> 

和文字:。

jQuery(document).on('click', 'button', function(event) { 
    window.link_was_clicked= true; 
}); 

window.onbeforeunload = function() { 
    if(window.link_was_clicked==false){     
    //make ajax call  
    } 
}; 

看來問題是因爲有按鈕onclick附加了setLocation函數。有什麼辦法可以先觸發jQuery(document).on

+0

哪個按鈕你在說什麼?你在說關於瀏覽器的關閉按鈕嗎? – Sushil

+0

http://stackoverflow.com/questions/15277403/how-to-detect-if-a-link-was-clicked-when-window-onbeforeunload-is-triggered –

+0

你的HTML在哪裏?如果你沒有使用'

回答

0

該變量在加載之前不存在。所以加在它上面,然後再試一次

 window.link_was_clicked=window.link_was_clicked||false; 
    jQuery(document).on('click', 'button', function(event) { 
     window.link_was_clicked= true; 
     }); 

    window.onbeforeunload = function() { 
     if(window.link_was_clicked==false){     
     //make ajax call  
    } 
    }; 
+0

在實際的代碼它是'window.link_was_clicked = false;',我只是想保持例子簡短。所以這不是問題。 – JohnyFree

0

既然你沒有爲setLocation()提供的代碼,我會認爲這就是問題的所在。現在,關於您的點擊事件處理程序的執行順序的更改:

通常很難同時嵌入onclick和jquery綁定的處理程序,它會導致各種混淆。如果你不能改變的HTML,但是,你能做些什麼這傢伙提示:https://stackoverflow.com/a/7507888/2685386

$(document).ready(function() { 
    var myClick = $('button').attr('onclick'); 
    $('button').removeAttr('onclick'); 

    $(document).on('click', 'button', function(e) { 
     window.link_was_clicked=true; 
     // do my other stuff here.... 
     eval(myClick);// this will now call setLocation() 
    }); 
});