You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法修改HTML时,如何在script.js中引入init.js并调用init函数?

如何在无法修改HTML的情况下从script.js访问外部init函数?

你的代码失效的核心原因是:动态创建<script>标签加载init.js是异步操作——浏览器会继续执行后续代码,不会等待这个脚本加载完成。所以当你执行window.onload = init时,init函数还没被定义。

可行的解决方法有两种:

方法一:监听脚本加载完成事件

通过script.onload确保init.js加载并执行完毕后,再绑定window.onload事件:

let script = document.createElement('script');        
script.src = "../init.js";
script.onload = function() {
    window.onload = init;
};
document.head.appendChild(script);

方法二:强制同步加载(不推荐,可能阻塞页面)

设置script.async = false,让浏览器按顺序加载并执行这个脚本,此时后续代码可以直接访问init:

let script = document.createElement('script');        
script.src = "../init.js";
script.async = false;
document.head.appendChild(script);

window.onload = init;

补充说明:init.js中的函数默认会挂载到全局window对象上,只要脚本加载完成,就能全局访问。这样既实现了代码拆分,也能让其他脚本调用init函数。

内容的提问来源于stack exchange,提问作者Denis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:12:07