jQuery在某些站点中不起作用

jQuery在某些站点中不起作用,jquery,Jquery,比如说开放,, 然后在Chrome或Firefox中打开控制台, 为jQuery注入执行下面的代码: var jq = document.createElement('script'); jq.src = "//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js"; document.getElementsByTagName('head')[0].appendChild(jq); 将获得以下错误: Uncaught TypeError:

比如说开放,, 然后在Chrome或Firefox中打开控制台, 为jQuery注入执行下面的代码:

var jq = document.createElement('script');
jq.src = "//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js";
document.getElementsByTagName('head')[0].appendChild(jq);
将获得以下错误:

Uncaught TypeError: undefined is not a function 
在jQuery.js第3536行:

return readyList.promise( obj ); // 'promise' is an undefined function.

在同一页中,如果您添加:

var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js";
document.getElementsByTagName('head')[0].appendChild(jq);
它会起作用的

当您使用//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js而不使用https:或http:时,它会根据某些因素自动尝试获取其中一个。在本例中,它尝试获取http:,但站点只接受对https:的引用,因此将失败

以下是另一篇文章的引文:

使用与协议无关的绝对值 路径:

如果浏览器正在中查看页面 SSL通过HTTPS,然后它将请求 使用https协议的资产, 否则它将使用HTTP请求它

这就避免了这个页面的糟糕 包含安全的和非安全的 IE中的项目错误消息,保留 系统中的所有资产请求 同样的协议

警告:当用于或 @导入样式表,IE7和IE8 . 所有其他 然而,它的用途很好

回答我的问题:

有些站点定义对象的原型,如:

它将破坏jQuery

这里有一个类似的问题

还有:我们正在展望未来,但是 请不要这样做,不管jQuery的状态如何

这是6年前发布的,但似乎无法解决

以下是来自以下方面的解决方案:


但是这样的话,你必须创建一个定制的jQuery,这样你就不能从公共CDN导入jQuery。

嗨,我在Chrome中尝试了你的脚本,但是得到了同样的错误。我的也可以,对不起。我没想到会因为试图帮助别人而遭到否决。如果这是个问题,那么jQuery一开始就不会成功下载。CDN倾向于将文件同时放在HTTP和HTTPS上,这样您就可以使用//ajax.googleapis.com/语法并获得与当前页面匹配的安全或非安全版本。您的浏览器是什么?它对我不起作用,但谢谢你的帮助。@JoeEnos有时它会失败,我的朋友,我在某些情况下也经历过。令人难忘的是,谷歌不让某些国家访问它的一些网站,例如,如果你在伊朗,你就不能访问code.google.com或ajax.googleapis。com@Kermani很明显,他们能够下载jQuery—错误发生在jQuery文件执行时。@Kermani我可以访问ajax.googleapis.com页面上还有其他脚本吗?我希望只有当其他脚本以某种方式修改全局变量或类型时,这种情况才会发生,而这种方式与jQuery冲突。如果人们不小心的话,Javascript可以做一些古怪的事情,比如覆盖内置类型的原型或其他疯狂行为。我建议逐个取出其他脚本,看看是否可以找到可能导致问题的脚本。@JoeEnos我看到页面使用的是prototype.js,但我认为jQuery可以与其他库一起使用,因为jQuery有一个jQuery.NoConfigt方法
<img src="//domain.com/img/logo.png"/>
  if (!Object.prototype.extend) {
    Object.prototype.extend = function(){}
  }
    for (var i in O) {
        if (!O.hasOwnProperty(i)) { continue; }// Add this to all `for...in` loops
        // other code stays unchanged
    }