慕萊塢森
2023-08-05 19:40:58
我有兩個文件。HTML 文件:<!DOCTYPE html><html> <head> <script type="text/javascript">function update_layout(){ var new_source = document.createElement('script') new_source.src = 'script_code.js' new_source.type = 'text/javascript' document.getElementsByTagName('head')[0].appendChild(new_source)}function do_layout(){ alert(Lay_Table['nam'])} </script> </head> <body> <input type="button" value="Update" onclick="update_layout();do_layout();"/> </body></html>和一個名為“script_code.js”的 JavaScript 文件:Lay_Table = {}Lay_Table['nam'] = 'US 104 Key'當(dāng)我單擊“更新”按鈕時,我收到錯誤,而不是包含文本“US 104 Key”的警報。我在 Stack Overflow 上查看過非常類似的問題,但無法找出問題所在。我是否犯了一個錯誤,或者由于安全原因不再允許使用此方法?我正在使用谷歌瀏覽器。
1 回答

三國紛爭
TA貢獻(xiàn)1804條經(jīng)驗 獲得超7個贊
該腳本需要一些時間才能插入到文檔中并運行 - 它不會立即發(fā)生,因此Lay_Table
在運行時沒有及時定義do_layout
。load
考慮向插入的標(biāo)簽添加一個偵聽器(并避免內(nèi)聯(lián)處理程序,它們現(xiàn)在有太多不值得使用的問題,例如瘋狂的作用域鏈和引用轉(zhuǎn)義問題):
window.addEventListener('DOMContentLoaded', () => {
? document.querySelector('input').addEventListener('click', update_layout);
});
function update_layout()
{
? ? var new_source = document.createElement('script')
? ? new_source.src = 'script_code.js'
? ? new_source.addEventListener('load', do_layout);
? ? document.head.appendChild(new_source)
}
添加回答
舉報
0/150
提交
取消