簡體   English   中英

本機頁面javascript完成執行后,如何執行擴展代碼?

[英]How to execute extension code after native page javascript finishes executing?

如今,許多網頁都有自定義Javascript來執行頁面加載時的操作。 他們要么修改頁面內容,要么加載外部小部件。

我的擴展程序嘗試讀取DOM並在頁面中插入一些數據。 但是在某些情況下頁面具有自己的Javascript,我的擴展名將在頁面Javascript之前執行。

因此,頁面Javascript可能會覆蓋我的插入內容或插入我的擴展名無法讀取的數據。 在頁面Javascript函數加載/執行之后,如何等待執行擴展?

也許這會有所幫助,但是它會產生一些不良的副作用:

$(function () {
    setTimeout(function () {
        alert("At last!");
    }, 1000); // 1000 millis after page loaded and most probably all onload handlers have been run
});

主要的副作用是它將在1000毫秒后執行,因此在這段時間內,用戶將看到未處理的頁面,然后腳本將對其進行處理。 在某些情況下,這可能很難看,並且會損害用戶的體驗。


編輯:

您也可以嘗試一下。 在主體的一端(內部,但最后)添加以下腳本標記:

<script>
    $(function () { alert("LAST!"); });
</script>

通過腳本執行的規則以及jQuery遵循通過$(function () { ... });添加onload處理程序的順序這一事實$(function () { ... }); 成語,您可以確定代碼最后執行。 問題在於,任何異步執行(例如AJAX回調處理程序)都將無序執行(即,相對於形成責任鏈window.onload處理程序而言是異步的)。 為了解決這個問題,您需要一個模式,但這可能是過沖的。

暫無
暫無

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

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