[英]How to access a function or variable in a script run with $.getScript
使用$.getScript
運行腳本后,是否可以通過某種方式訪問腳本的名稱空間? 由於plugin
是在全局范圍內定義的,所以我本以為可以運行它了。
index.js
$.getScript('plugin.js').then((...result) => console.log(result));
$.getScript('plugin.js').then(plugin());
plugin.js
function plugin()
{
console.log("plugin.js");
return "plugin";
}
_ 輸出 __
ReferenceError: plugin is not defined
at https://replit.org/data/web_hosting_uncache/abalter/loading-scripts-and-callbacks-1/index.js:5:25
[ 'var plugin = function()\n{\n console.log("plugin.js");\n return "plugin";\n}',
'success',
Promise {
readyState: 4,
getResponseHeader: [Function],
getAllResponseHeaders: [Function],
setRequestHeader: [Function],
overrideMimeType: [Function],
statusCode: [Function],
abort: [Function],
state: [Function],
always: [Function],
catch: [Function],
pipe: [Function],
then: [Function],
promise: [Function],
progress: [Function],
done: [Function],
fail: [Function],
responseText: 'var plugin = function()\n{\n console.log("plugin.js");\n return "plugin";\n}',
status: 200,
statusText: 'success' } ]
問題在於此行:
$.getScript('plugin.js').then(plugin());
then
接受一個函數作為參數,而不是一個函數調用 (除非所述函數調用是對返回要放入promise鏈中的函數的高階函數的調用)
您在發出腳本請求的同時調用plugin()
。 您不需要-僅在請求完成后才想調用plugin
。 但是,在運行getScript
,尚未在窗口范圍內定義plugin
。 在then
里面,放一個運行 plugin
的函數:
$.getScript('plugin.js').then(() => plugin());
您正在以下位置立即調用該函數:
$.getScript('plugin.js').then(plugin());
改成
$.getScript('plugin.js').then(_ => plugin());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.