2015-11-02 12 views
-1

因此,我一直在用這種方式困擾着我的大腦,但無法弄清楚爲什麼這不起作用。當在一個函數中使用時,window.stop方法似乎不起作用

我設置了一些簡單的功能,以防止用戶通過超鏈接離開頁面,而是顯示覆蓋。因此,我在所有鏈接上設置了一個簡單的事件監聽器,單擊這些鏈接將停止頁面加載並啓動覆蓋。

mmClickRecieved變量用於腳本的另一部分,僅用於確保用戶只看到一次覆蓋。如果用戶在頁面上處於非活動狀態一段時間,則超時功能將觸發相同的疊加層。

但是,當我嘗試此代碼,當點擊超鏈接時,疊加層觸發正常,但頁面不會停止加載。我已經單獨嘗試了這段代碼的各個部分,看起來很好,完全不知道爲什麼這不起作用。任何想法的人?

$("a").click(function() { 
    if (mmClickRecieved === false) { 
     if (navigator.appName == "Microsoft Internet Explorer") { 
    window.document.execCommand('Stop'); 
     } 
     else { 
    window.stop(); 
     } 
     clearTimeout(mmTimeout); 
     mmNumberOverlay(); 
    } 
    else { 
     // no further action 
    } 
}) 

更新:不知道爲什麼,香港專業教育學院得到了這一個-1 ..我可以更新的問題,如果它沒有任何意義

+2

你爲什麼不使用簡單'事件。 preventDefault()'然後顯示覆蓋? 'window.stop()'_only_適用於瀏覽器實際上並未加載其他頁面的情況。它的意思是停止_your_當前頁面的加載,而不是阻止加載其他頁面。 – somethinghere

回答

1

爲什麼不使用preventDefault - 停止用戶從以下這是鏈接點擊,而是讓你去做別的事情與此點擊:

var mmClickRecieved = -1; 
 

 
$("a").click(function(event){ 
 
    // I am using this as an easy way to mimic your value 
 
    if(!(++mmClickRecieved)){ 
 
    event.preventDefault(); 
 
    mmNumberOverlay(); 
 
    } 
 
    // You don't need an else, since the event wont be prevented 
 
}) 
 

 
function mmNumberOverlay(){ 
 
    alert("This happens only once!"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<a href="http://www.google.com">Go to Google (this is not allowd in this snippet)!</a>

+1

多數民衆贊成在完美,完全不知道這種方法!難怪我在做什麼似乎如此過度複雜,非常感謝你! – Ash