簡體   English   中英

jQuery偵聽器在隱身模式Chrome中間歇性工作

[英]Jquery listener works intermittently in incognito mode chrome

我包括jquery並使用它在新的瀏覽器窗口中打開所有鏈接到link.php的鏈接:

<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
window.onload = function() {
    $('a[href*="link.php"]').attr("target", "_blank");
};
</script>

此方法有效,但是當我在Chrome的隱身模式下測試它時,大約有1/5的時間它不起作用,並在同一窗口中打開。 我很難在chrome中進行調試,因為一旦失敗,我將不在頁面上並且無法檢查js。 我下一步應該怎么解決這個問題?

毫無疑問,問題是緩存。 對於新的隱身窗口,緩存為空,因此需要從服務器加載網頁的所有內容(圖像,電影,腳本等)。

所有這些文件完全加載后,將執行分配給window.onload的回調。 因此,只要仍有負載,就不會將target設置為_blank_blank以后,單擊鏈接將在同一頁面中打開該鏈接。

無需等待所有元素加載,只需等待頁面的html代碼完全加載並且DOM准備就緒即可。

為此,您需要收聽dom ready事件。 在jQuery中,您可以這樣進行:

$( document ).ready( function() { 
   $('a[href*="link.php"]').attr("target", "_blank");
});

jQuery.ready()

[...]雖然JavaScript提供了呈現頁面時執行代碼的load事件,但只有在完全接收到所有資產(例如圖像)之后,才會觸發此事件。 在大多數情況下,可以在完全構建DOM層次結構后立即運行腳本。 確保傳遞給.ready()的處理程序將在DOM准備就緒后執行,因此通常這是附加所有其他事件處理程序並運行其他jQuery代碼的最佳位置。[...]

暫無
暫無

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

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