在运行时用动态加载的脚本重写JavaScript函数

Overwriting JavaScript function with dynamically loaded script during runtime

本文关键字:脚本 重写 JavaScript 函数 加载 运行时 动态      更新时间:2023-09-26

我只是想看看这种方法在架构上是否合理。

我有一个在init上加载的main.js,以及在运行时加载的动态外部脚本(一次加载一个)。main.js中有一个函数,每次需要处理从服务器接收的消息时都会被调用,我希望该函数能够调用外部脚本自定义句柄函数,为此,我在外部脚本中指定了一个同名函数,以便每次加载新脚本时都覆盖main.js的函数。

从我的试验来看,它似乎有效,但有一些注意事项,所以我有一些问题:

有更好的方法做这样的事情吗?

这种方法可能会出什么问题?

我意识到,如果没有刷新/导航,就无法从缓存中清除脚本,但我的脚本相对较小,所以我认为这不会是个问题。

编辑更多信息:

我需要有一个单一的页面结构,这样导航是不可能的。在服务器发送消息之前,我也不知道下一个"页面"会是什么,所以必须在运行时使用AJAX检索资源。

在主函数中指定一个调用:

var call=false;
function onsomething(){
//general stuff needed in both
if(call!=false){
call();
}else{
//original main code
}}

只需在稍后加载的js:中设置即可

call=myfunction;
function myfunction(){//new main code}