首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法从外部文件调用在onload中定义的函数

有没有办法从外部文件调用在onload中定义的函数
EN

Stack Overflow用户
提问于 2020-11-23 17:00:43
回答 2查看 40关注 0票数 0

以下是基于该场景创建的示例代码。showData()函数在javascript load函数中定义。我想从另一个文件调用showData(),可能只需单击一下按钮。我知道如果showData是全局的,这将会起作用。不可能使函数成为全局的,因为在这个场景中它是一个动态生成的代码。在JS中有没有允许调用这样的函数?

代码语言:javascript
运行
复制
// 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

EN

回答 2

Stack Overflow用户

发布于 2020-11-23 17:28:46

不是的。

该函数在另一个函数中声明。它作用域是函数。

除非您将该代码更改为全局代码,否则根本无法从包含函数的外部访问它。

票数 1
EN

Stack Overflow用户

发布于 2020-11-23 17:35:56

如果不能更改代码结构,也许可以尝试将函数附加到全局window对象,如下所示:

代码语言:javascript
运行
复制
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,在函数可用之前执行)。

您可以尝试:

代码语言:javascript
运行
复制
// second call
setTimeout(function() {
    window.showData();
}, 1000);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64965304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档