簡體   English   中英

單個JavaScript文件。 不插入內聯腳本,如何檢查特定頁面是否已加載?

[英]Single JavaScript file. Without inserting inline scripts, how can I check if a specific page has loaded?

不插入內聯腳本,如何檢查特定頁面是否已加載? 通常,我會使用window.onload在頁面的html頭中放置一個內聯腳本來調用函數,但是如何使用鏈接的JavaScript文件來實現此目的?

例如,假設我有一個打開特殊頁面的按鈕,並且需要在開始使用DOM之前准備好DOM。 我是否應該使用在每個主體底部鏈接的兩個JavaScript文件,然后將所有內容包裝在onload事件調用的函數中?

將腳本標簽放在頁面底部,即最終的body標簽之前,是一種很常見的做法。 這將意味着DOM將在此時加載,並且可以安全地執行您的代碼。 這也意味着您的腳本要到最后才下載,從而為訪問者帶來更好的體驗。

如果您想對此加以說明,則可以在body標簽上添加一個事件偵聽器,並在加載body之后運行代碼。 我不確定您的確切用例,因此不知道這是否可以更好地滿足您的目的。 假設您沒有做任何不尋常的事情,並且您的腳本被放置在最終body標簽之前,那么這不會有太大的額外差別,因為大多數DOM都已經加載了。 如果您確實想這樣做,則可以使用以下代碼。

var bodyElement = document.getElementsByTagName("BODY")[0];
bodyElement.onload = function () {
    // Your loading function
}

讓A為帶有單擊按鈕的頁面。
令B為在A的按鈕上單擊打開的特殊頁面

我很難理解您要問的是什么,但這聽起來像是“ A在B之前”。

如果在該頁面完成加載后可單擊頁面A上的按鈕,則可以安全地假定A和B均已加載,則在頁面B完成加載后運行的腳本。 僅當可以保證A加載B時,才可以在B中編寫依賴於A的邏輯。如果繞過A直接訪問B會發生什么情況?

B的可能標記如下:

<html>
    <head>
        <title>Special Page</title>
    </head>
    <body>

        <script src="test.js"></script>
    </body>
</html>

上面鏈接的test.js文件:

window.onload = function(){
    console.log('special page is loaded');
};

B頁上的onload事件可以安全地假定A已加載,但前提是您可以保證A始終調用B。

我不知道您是否要嘗試將頁面B加載到iframe或將頁面從A重定向到B或通過Ajax和HTTP GET將B提取到A中。

暫無
暫無

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

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