知道合伙人数码行家 推荐于
2010年毕業于北京化工大学北方学院计算机科学与技术专业毕业学士学位,工程电子技术行业4年从业经验
方法都有,只罗列一般情况下的两
要裝入的js代码测试是a.js:
一直接插入src,这种方法简单而直接但有局限性,
在如上的js代码测试放上head标签内执行时大多数情况下是会出错,信息为:错误:缺少对象
这是由于动态创建对象script时则于a.js还没有完全载入而导致的。执行下面的js代码测试你就可以发现原因了。
- loaded : 脚本js代码測试完成读入但尚未开始解释执行;
我们可以知道,a.js依然在loading状态在执行foo()当然是错误的。但下一个script标签执行中a.js的readyState是complete了,所以可以执行foo()嘚函数由此,我推荐你可以简单的这样运用动态用生成script标签方法来添加js的url
1)用window.setTimeout方法来执行,估计a.js已经载入完毕才执行a.js里的函数。这個方法仍然不保险
2)多加一个script标签放置要执行的js代码测试
二、用XMLHttpRequest和window.execScript动态的执行a.js这个方法的优点比较明显,但效率可能有所下降没有测試,有兴趣的朋友可以自己测试一下速度
但这个方法仍有缺点,也就是a.js脚本中的js代码测试有中文的情况如何处理?那就要经常解码了而解码恰恰是js的软肋,如果运用vbs来解码那么兼容也就没有了。要看自己具体的应用了我在neverModules里加载js包时用的就是window.execScript方法来解析js代码测试,这样更可以配合js namespace的应用
不过大多数的情况下第二种方法处理起来应该没有问题,如果要很严格的执行的话第一种方法还是有改进的js玳码测试的,比如加载a.js的内容把本身的脚本再次解析再执行,但复杂度就提高了所以要有一个非常完美的解决方案,还需要更进一步來讨论
我就不写这么多了,仅仅为一个提醒还有一个抛砖引玉的作用。