以下是基于该场景创建的示例代码。showData()函数在javascript load函数中定义。我想从另一个文件调用showData(),可能只需单击一下按钮。我知道如果showData是全局的,这将会起作用。不可能使函数成为全局的,因为在这个场景中它是一个动态生成的代码。在JS中有没有允许调用这样的函数?
// Not possible to change the structure of this file as its coming dynamically
window.addEventListener("load", function() {
  showData(); // 1st time call
  function showData() {
    console.log('starting execution')
  }
});
// Calling from another file
showData(); // 2nd time call - not possible
发布于 2020-11-23 17:28:46
不是的。
该函数在另一个函数中声明。它作用域是函数。
除非您将该代码更改为全局代码,否则根本无法从包含函数的外部访问它。
发布于 2020-11-23 17:35:56
如果不能更改代码结构,也许可以尝试将函数附加到全局window对象,如下所示:
window.addEventListener("load", function() {
  // attached to window
  window.showData = function() {
    console.log('starting execution')
  };
  window.showData(); // 1st time call
    
});
// Calling from another file
window.showData();但要确保第二次调用(来自另一个文件)有一点延迟(请记住,必须先将eventListener连接到window,在函数可用之前执行)。
您可以尝试:
// second call
setTimeout(function() {
    window.showData();
}, 1000);https://stackoverflow.com/questions/64965304
复制相似问题