亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

動態更改腳本源不起作用

動態更改腳本源不起作用

慕萊塢森 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'當我單擊“更新”按鈕時,我收到錯誤,而不是包含文本“US 104 Key”的警報。我在 Stack Overflow 上查看過非常類似的問題,但無法找出問題所在。我是否犯了一個錯誤,或者由于安全原因不再允許使用此方法?我正在使用谷歌瀏覽器。
查看完整描述

1 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

該腳本需要一些時間才能插入到文檔中并運行 - 它不會立即發生,因此Lay_Table在運行時沒有及時定義do_layout。load考慮向插入的標簽添加一個偵聽器(并避免內聯處理程序,它們現在有太多不值得使用的問題,例如瘋狂的作用域鏈和引用轉義問題):


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)

}


查看完整回答
反對 回復 2023-08-05
  • 1 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號