H5W3
当前位置:H5W3 > 其他技术问题 > 正文

document.write插入的js文件,为什么里面的方法都用不了

 var list = ['language.js','formCommon.js','approve.js'];
for(var i=0;i<list.length;i++){
document.write('<script type="text/javascript" src="https://segmentfault.com/q/1010000023946336/script/'+list[i] + '?v=' + ver +'">' + '</sc' + 'ript>');
}
//getData方法来自approve.js,为什么拿不到
const params = getData()

回答

先后问题,你应该是在动态引入js包前,调用了里面的方法,导致undefined

  1. 是否考虑了脚本加载是异步的问题?如何确保脚本已经加载并执行,看步骤二。
  2. 用document.write?什么鬼?创建scripte标签,插入到dom中,监听onload事件,再搞个定时器执行callback或者resolve,这套流程不好吗?

js代码是即时执行的,dom渲染相比js执行还是慢很多,简而言之就是你的js还没插入到页面上就去调用了getData,可以试下延迟一秒后再去调用,就可以验证了

var list = ['language.js','formCommon.js','approve.js'];
for(var i=0;i<list.length;i++){
 document.write('<script type="text/javascript" src="https://segmentfault.com/q/1010000023946336/script/'+list[i] + '?v=' + ver +'">' + '</sc' + 'ript>');
}

setTimeout(() => {
  const params = getData()
}, 1000);

未经允许不得转载:H5W3 » document.write插入的js文件,为什么里面的方法都用不了

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址