我使用的一些功能使用jQuery,例如:如何準確找出觸發事件的原因?
$(window).one('beforeunload', function() {
//my code
});
但我真的想找到所有關於什麼觸發此事件,以及如何。
我嘗試下面的代碼:
$(window).one('beforeunload', function(e) {
alert(JSON.stringify(e));
});
但它引起了人們對圓形結構異常。當然,必須通過它來區分和調試。
我怎麼申請呢?
我希望看到什麼觸發此事件,是一個鏈接,提交的表單,一個javascript,頁面刷新,或來回按鈕或什麼的,並且它的所有罰款在這種情況下。 但,如果它是通過調用觸發打開外部應用程序,我想放棄該事件並返回null。
外部應用程序啓動的實例:
<a href="skype:your_skype_name?call" >
任何想法?
解決
這是我如何解決它。
我只是做了一些腳本的鏈接首先,在事件以獲得更多的控制權:
<a href="javascript:void(0)" id="skype_click_ok"
然後,我創建一個全局變量來存儲beforeunload的狀態:我手動
var dontunload=0;
然後處理鏈接,但設置location.href,並更改變量狀態:
$('#skype_click_ok').click(function(){
dontunload=1;
location.href='skype:marilynbrusas?call';
});
現在我致動人beforeunload事件,請注意one()
也改爲bind()
:
$(window).bind('beforeunload', function() {
if (dontunload==1) dontunload=0; //if triggered from our skype - do nothing, yet cancel state for the next call
else { //Do the actual code
// Fade out, before leaving the page.
$('html#my_html').stop(true,false).css('overflow','hidden').animate({opacity:0},2000);
// Lock content with invalid image hack
$('body#my_body').prepend(
$('<div>').attr({style:'position:fixed;height:100%;width:100%;left:0;top:0;z-index:900100;background-image:url(in-your-face)'})
);
// unbind the event
$(this).unbind('beforeunload');
}
});
EDIT3
其實它沒有解決。這一招並不在IE瀏覽器,也是甚至從JavaScript觸發:無效(0)鏈接...
打開外部應用程序的調用?請你能更好地解釋一下嗎? –
'' - 這確實會觸發GET,因此會觸發before-unload事件。外部應用程序意味着它有一個內部協議,而不是'http:',例如'skype:'。所以它會嘗試啓動一個Skype應用程序,而不是在網絡上打開一些頁面。如果是這樣的話,我確實想取消我的活動。 – Anonymous