当引入的第三方JS文件使用了window.onload导致事件覆盖时,可通过eval函数动态解析并执行原有逻辑。该方法先保存原onload函数,再定义新函数调用原函数及新增逻辑,从而同时运行多个加载事件,避免手动合并代码。
解决window.onload事件冲突问题
在网页开发中,有时引入的第三方JS文件已经定义了window.onload事件。这会导致当前页面的onload事件被覆盖而无法执行。除了将两个函数合并到一个onload中,还有其他方法可以确保两者都能运行吗?
if(window.onload!=null){
eval("theOldFun="+window.onload.toString());
window.onload=function(){theOldFun();addReadResource();};
}
利用eval函数动态执行代码
eval()函数的作用:
它的功能是把对应的字符串解析成JS代码并运行 比如说你现在要运行一个可变的方法
function name1(){……}
function name2(){……}
var m="name1";
eval(m+'()');//运行name1();
m='name2';
eval(m+'()');//运行name2();