如何使用 $.getScript 访问脚本 运行 中的函数或变量
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
接受 function 作为参数,而不是 function call(除非所述函数调用是对一个高阶函数 returns 一个要放入承诺链中的函数)
您在发出脚本请求的同时调用了 plugin()
。您不希望这样 - 您只想在请求完成后才调用 plugin
。但在 getScript
运行时,plugin
尚未在 window 范围内定义。在 then
中,放置一个函数 runs plugin
once called:
$.getScript('plugin.js').then(() => plugin());
您正在立即调用函数:
$.getScript('plugin.js').then(plugin());
改为
$.getScript('plugin.js').then(_ => plugin());
在 运行 和 $.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
接受 function 作为参数,而不是 function call(除非所述函数调用是对一个高阶函数 returns 一个要放入承诺链中的函数)
您在发出脚本请求的同时调用了 plugin()
。您不希望这样 - 您只想在请求完成后才调用 plugin
。但在 getScript
运行时,plugin
尚未在 window 范围内定义。在 then
中,放置一个函数 runs plugin
once called:
$.getScript('plugin.js').then(() => plugin());
您正在立即调用函数:
$.getScript('plugin.js').then(plugin());
改为
$.getScript('plugin.js').then(_ => plugin());