我使用下一個代碼將腳本動態添加到我的頁面:
var newScriptElem = document.createElement("script");
newScriptElem.innerHTML = myJSCodeString; // myJSCodeString loaded before from .js separate file.
parentElement.appendChild(newScriptElem);
里面的代碼確實被呼叫并且作業正常,但我無法在該塊之外獲取任何變數。我之前通過使用<script src="app.js">標簽手動添加了一個單例物件。它有全域變數,我想讀。
如果我在 HTML 檔案中的腳本標記中添加代碼,它作業正常,但如果我嘗試從動態加載的腳本中獲取它,它就不起作用。
app.js 基本上是這樣的:
var app = new App();
function App(){
this.someVar = 2;
}
這個確實有效
<body>
<script src="js/app.js"></script>
<script>
console.log(app); // Outputs App Obj
</script>
</body>
但這不會:
var newScriptElem = document.createElement("script");
newScriptElem.innerHTML = "console.log(app)"; // Outputs "undefined"
parentElement.appendChild(newScriptElem);
有沒有辦法從動態添加的腳本元素的范圍內讀取全域變數?
PS 順便說一句,我嘗試使用 Cordova,但無論如何它在 Chrome 瀏覽器中都不起作用..
uj5u.com熱心網友回復:
在您的問題中,您沒有附加您生成的腳本。
<script>
var foo = 1;
var newScriptElem = document.createElement("script");
newScriptElem.innerHTML = `console.log(${foo});`;
document.body.append(newScriptElem);
console.log("loaded");
</script>
uj5u.com熱心網友回復:
正如@Bergi 提到的,一種解決方案是呼叫eval(myJSCodeString),而不是將其添加為<script>塊。
這樣代碼將按原樣執行,并且可以訪問全域變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/406586.html
標籤:
上一篇:將變數內容匯出到檔案
下一篇:給出一個改變字串變數的字串
