簡體   English   中英

如何在使用$ .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' } ]

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());

您正在以下位置立即調用該函數:

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

改成

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

暫無
暫無

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

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