javascript - 将 jQuery 添加到第 3 方页面失败

标签 javascript jquery

我正在尝试一些事情,其中​​我尝试在网站上插入 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/

相关文章:

javascript - jquery 对话框位置不起作用

javascript - 使用 jQuery 更改工具提示标题

javascript - 在上一个补间完成后启动补间。 - Greensock/ScrollMagic

javascript - Froala 添加内联样式自定义按钮

javascript - 自己的数组 + jQuery.serializeArray() + 作为 json 发布

javascript - Angular 列排序点击标题

javascript - 展开折叠树

javascript - 我应该等待 document.onload 事件吗?

javascript - AngularJs - 带 Angular 的书签按钮

javascript - 如何在php和js中获取使用utf8mb4编码的字符长度