非同源js文件加载问题

严宇飞 发布于 2015/09/09 10:27
阅读 155
收藏 0

遇到的问题:

ajax加载的对话框,里面会加载一个js文件(<script>标签),然后基于这个js文件的一些代码

<script src="http://a.com/a.js" async="false"></script>

<script>

$(document).ready(function{

// codes based on a.js

});


</script>

因为scritp标签的src如果和网站页面不是同源的,就会出现问题,js代码不等文件加载完就执行了

于是就出现了对象未定义的错误:

ucd js based code executed

Uncaught ReferenceError: UcdDebug is not defined
ucd js loaded

如果把a.js地址改成同域名的,就会等待文件加载完再执行,不会出现问题。

有什么办法能使a.js加载完后再执行下面的代码么?

另为,发现如果这个内容不是放在ajax加载的对话框里面,而是直接放在页面代码中,即使是非同源的,也不会出现问题。


现在的临时解决方法:建一个同源的agent文件去读a.js

加载中
0
严宇飞
因为 a.js 是一个合并的压缩文件, 上线的话放在cdn里面,和页面域名不一样
0
boystudio
boystudio

    不同域的JS加载是没没问题的,JS是默认堵塞加载,加载执行完前面的JS才加载和执行后面的JS。你把script标签的async="false"属性给去掉,就OK了。这个属性会导致你的脚本异步加载。

    若要异步加载,你应该在加载完成后再执行主代码。可用事件或不断检测来实现。

boystudio
boystudio
回复 @严宇飞 : 不需要这个属性,若还有问题,应该检查别的原因,而不是题主怀疑的这个
严宇飞
都试过了,本来没有加这个属性的
返回顶部
顶部