簡體   English   中英

同步執行腳本標簽注入

[英]Script tag injection with synchronous execution

我必須通過一些JavaScript添加腳本標簽並使其完全執行,因為后面的語句依賴它。

 <html> <head> <title>Injecting Script Tags</title> </head> <body> <h1>Injecting Script Tags</h1> <script> console.log('starting'); var newScriptTag = document.createElement('script'); newScriptTag.src = 'https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js'; newScriptTag.type = 'text/javascript'; document.head.appendChild(newScriptTag); try { var now = moment().format('HH:mm'); console.log(`moment loaded. The time is ${now}`); } catch (e) { console.log(`Moment not loaded: ${e}`); } </script> </body> </html> 

如上面的代碼片段所示,插入標簽后, moment()在語句中不可用。

認為可以用eval(...) ,但是該選項並不受歡迎。

使用onload事件

 <html> <head> <title>Injecting Script Tags</title> </head> <body> <h1>Injecting Script Tags</h1> <script> console.log('starting'); var newScriptTag = document.createElement('script'); newScriptTag.src = 'https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js'; newScriptTag.type = 'text/javascript'; newScriptTag.onload = function(){ try { var now = moment().format('HH:mm'); console.log(`moment loaded. The time is ${now}`); } catch (e) { console.log(`Moment not loaded: ${e}`); } }; document.head.appendChild(newScriptTag); </script> </body> </html> 

暫無
暫無

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

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