我有两个网页(让我们称之为网站A和B),它们都使用相同的外部源jQuery。站点B只是站点A的子站点。在站点A中,我将javascript声明为:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
网站A没有任何问题。
在网站B上,我宣布jQuery库略有不同,但是找到并加载了libary:
`if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'%3E%3C/script%3E"));`
问题:在IE 8和9中,当加载站点B时,Microsoft安全错误“此页面正在访问不受其控制的信息。这会带来安全风险。是吗?想继续吗?“
调试:在IE JavaScript调试器中查看站点A和B之后,很明显A没有问题,因为当加载jQuery库时B会提示用户使用此警报。
为什么加载此库会在一个站点上强制提示,而不是另一个站点?
答案 0 :(得分:2)
将您的网站B更改为使用http网址google:
改变这个:
https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
到
http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
您在IE中收到该消息,因为https创建了安全连接,而您的网站未使用https(我假设)。
答案 1 :(得分:0)
您应该使用DOM而不是document.write
。这很可能会阻止这样的错误。就这样做:
if (typeof jQuery === 'undefined') {
var s = document.createElement('script');
s.src = '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js';
s.type = 'text/javascript';
document.head.appendChild(s);
}
编辑:Hardy的答案可能是解决这个问题的正确方法,但重点仍然是这几乎总是向页面添加元素的更好方法。