首頁 >web前端 >js教程 >為什麼透過innerHTML新增的腳本總是不執行,我該如何修復它?

為什麼透過innerHTML新增的腳本總是不執行,我該如何修復它?

Patricia Arquette
Patricia Arquette原創
2024-12-23 00:22:10686瀏覽

Why Don't Scripts Added via innerHTML Always Execute, and How Can I Fix It?

腳本可以與innerHTML合併嗎?

使用innerHTML將腳本插入

頁面中可能會導致腳本出現在 DOM 中,而不會在 Firefox 和 Chrome 等瀏覽器中執行。本文探討了此行為背後的原因,並提供了使此類腳本可執行的解決方案。

範例程式碼中提供的 HTML 示範了在

中嘗試執行腳本的情況。使用innerHTML。但是,所需的警報訊息「hi」並未出現,這表示腳本無法運作。

為了解決這個問題,我們提出了一種方法,以遞歸方式將所有不可執行的腳本替換為可執行腳本。此方法稱為 nodeScriptReplace,遍歷 DOM 樹並識別腳本元素。如果遇到不可執行的腳本,它會複製該腳本,為其指派可執行內容,並取代原始腳本元素,使其能夠執行。

此外,nodeScriptClone 函數透過擷取來建立可執行腳本元素不可執行腳本的innerHTML 並設定其屬性。這些屬性將轉移到新的可執行腳本,確保正確的行為。

nodeScriptIs 函數透過檢查給定節點的標籤名稱來檢查其是否為腳本元素。

執行腳本並顯示「hi」警報,只需在頁面的根元素上呼叫 nodeScriptReplace 即可。下面的程式碼片段示範了這一點:

nodeScriptReplace(document.getElementsByTagName("body")[0]);

此方法提供了一種強大的機制,用於執行使用innerHTML 添加到頁面的腳本,確保其預期功能。

以上是為什麼透過innerHTML新增的腳本總是不執行,我該如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn