gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:02:42 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com