我正在尝试一些事情,其中我尝试在网站上插入 jquery,即 http://www.tesco.com/wine .
出于某种原因,我无法访问 jQuery,即使我能够成功地将一个新的脚本标记附加到 body 元素。此外,该页面似乎有一个 window.$
函数,我试图用 delete window.$
删除它。这对我来说似乎是错误的。如何制作不可删除的内容?
这是我用来将 jQuery 脚本附加到文档的代码:
var s = document.createElement('script');
s.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js";
document.body.appendChild(s)
它正在其他页面上工作。
最佳答案
在 JavaScript 聊天中讨论这个之后,Tim Stone discovered页面上的 JS 添加了它自己的 Object.prototype.extend
实现 - 这会破坏 jQuery 脚本。要修复它(但可能会破坏页面上的另一个脚本),您可以在添加 jQuery 之前删除它:
delete Object.prototype.extend;
var s = document.createElement('script');
s.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js";
document.body.appendChild(s)
$
已在该页面上使用以下函数声明定义:
function $(A){return document.getElementById(A)}
document.getElementById()
与 $()
的别名并不少见——事实上,Firebug 和 WebKit 的开发人员工具在它们的控制台中执行此操作。
它是不可删除的,因为它被声明为 function
语句而不是对象属性。虽然 delete
可能在某些浏览器中有效,但在其他浏览器中不应该也不会。也就是说,我能够通过一个简单的赋值来覆盖该函数:
$ = function () {}
当 jQuery 加载时,它会创建 jQuery
命名空间,并使用 $
作为此命名空间的别名。因此,如果页面上的其他内容覆盖了 $
,您仍然可以使用 jQuery()
。
关于javascript - 将 jQuery 添加到第 3 方页面失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064753/