javascript - 如何访问使用 $.getScript 运行的脚本中的函数或变量

标签 javascript jquery ajax promise javascript-namespaces

在使用 $.getScript 运行脚本后,是否有某种方法可以访问该脚本的 namespace ?由于 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' } ]

https://repl.it/@abalter/loading-scripts-and-callbacks-1

最佳答案

问题出在这一行:

$.getScript('plugin.js').then(plugin());

then 接受函数作为参数,而不是函数调用(除非所述函数调用是对高阶函数的调用)返回一个要放入 promise 链中的函数)

您在发出脚本请求的同时调用 plugin()。您不希望这样 - 您只想在请求完成后才调用 plugin 。但在 getScript 运行时,plugin 尚未在窗口范围内定义。在 then 内部,放置一个一旦调用就会运行 plugin 的函数:

$.getScript('plugin.js').then(() => plugin());

关于javascript - 如何访问使用 $.getScript 运行的脚本中的函数或变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033587/

相关文章:

javascript - Jquery/javascript 检查 div 是否完成加载?

javascript - background.js 和内容脚本之间的通信?响应未定义

javascript - 如何让javascript将多维数组转换为字符串?

javascript - 如何从nodeJS中的子文件中获取与父文件夹相同的目录中的文件的绝对路径

java - Twilio:Twilio.Device.connect() 未命中语音请求 URL

javascript - Access-Control-Allow-Origin 不允许 jQuery Ajax POST 到 Rails 3.2.2

javascript - 来自响应的数据是无法设置为 iframe 的符号

javascript - Console.log 从后面的代码中输出数据

javascript - jquery每个regexp href同时检查一些字符串

javascript - 从文本链接获取 URL 参数并发布到 AJAX 调用