2017-03-21 113 views
0

我在頁面上有一個javascript函數,可以動態改變導航項的鏈接。有沒有什麼辦法可以保證它在第一個頁面之前先運行其他javascript?有沒有辦法強制javascript函數先運行

我在問,因爲這是一個重要的項目,並有可能在未來的某些事情可能會破壞之前,使這個腳本無法運行。

+0

你可以讓它在這裏運行...... https://learn.jquery.com/using-jquery-core/document-ready/ ...當然,如果你有很多'document.ready',那麼它會使它幾乎不可能跟蹤什麼是做什麼... –

+1

與香草js你可以做window.onload而不是document.ready – Mazz

+0

@Exception_al我不能使用jquery。它必須在頁面上實例化之前運行。 – zazvorniki

回答

-2

如果函數之前在代碼中,它會在其餘之前執行,因爲JS是單線程語言。在其他函數嘗試獲取DOM項目之前,DOM操作還未準備好。這是棘手的部分,很難計算和預測。

我想到的最簡單的解決方案是使用帶有標誌或承諾的setTimeout檢查器,但是在我看來,可能對問題的處理方法應該是重新考慮根本不需要setTimeouts。實際的代碼很難更精確。

+0

但我想確保在任何其他javasccript之前發生這種情況。我首先在頁腳中顯示,所以它應該在頁面呈現後出現。 你是說在其他JavaScript代碼上設置超時時間嗎?我試圖控制未來的開發人員投入什麼。 – zazvorniki

+0

如果我想在頁面加載之前進行DOM更改,那麼在DOM更改函數後面設置一個檢查器函數(使用小setInterval)將啓用其餘的代碼加載。 Afaik您不能依靠DOM更改繼續加載JS,因爲它可能因瀏覽器/設備而異。只有檢查變更是否準備好了標誌可能是一個可行的解決方案。您可以向用戶展示加載屏幕,並在標誌更改以改善用戶體驗時將其淡出。 但我再次建議不要使用setTimeouts並嘗試重新考慮這種方法。 –

+1

但是,我再也不擔心在更改之前頁面上的內容。我擔心有人可能會在頁面上運行代碼之前將代碼放在可能出現錯誤的位置,並且可能會阻止它運行。我仍然不明白你在哪裏用settimeouts去。 – zazvorniki

相關問題