加载jQuery时IE中出错

时间:2014-01-26 00:57:44

标签: javascript jquery internet-explorer

我有两个网页(让我们称之为网站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会提示用户使用此警报。

为什么加载此库会在一个站点上强制提示,而不是另一个站点?

2 个答案:

答案 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的答案可能是解决这个问题的正确方法,但重点仍然是这几乎总是向页面添加元素的更好方法。