javascript - Opera 用户 JS 中的 jQuery 不起作用

标签 javascript opera

)。我正在玩一些 Opera User JS。我在我的用户 JS 文件夹中包含了“1jquery.min.js”(1 在前面,因为 Opera 按字母顺序加载它们)。不幸的是,它似乎不起作用。

window.onload = OnWindowLoad;

$(document).ready(function()
{
  alert ($('#area_19'));
});

function OnWindowLoad ()
{
  alert ($('#area_19'));
  alert(document.getElementById("area_19"));
}

这段代码的有趣之处在于前两个警报返回 NULL,但最后一个确实找到了对象!所以该元素肯定存在于页面中,但我的 jQuery 似乎无法获取它。更奇怪的是,jQuery“就绪”功能起作用了,这表明我确实具备 jQuery 能力。

我对这一切感到很困惑::-/。希望有人能给我一个线索::- )。

最佳答案

我怀疑您正在使用另一个 JS 框架(可能是 Prototype.js)的页面上运行脚本。

如果 Prototype 包含在目标页面中,它会用它自己的 $ 覆盖你的 jQuery 副本,通过 ID 获取元素,而不是选择器。由于没有 ID 为 #area_19 的元素(# 不是 ID 中的有效字符),它将返回 null。 jQuery 永远不会为不存在的元素返回 null,您只会得到一个空的包装器对象。

($(document).ready() 代码仍会执行,因为 $ 在 Prototype 被包含之前被调用并改变了 $< 的行为.)

尝试使用显式 jQuery 函数而不是 $ 快捷方式。

在混合使用多个框架,甚至混合使用同一框架的两个副本/版本时,这类干扰很常见。从 jQuery 的 Angular 来看,它的交互可以减少,但不能消除,用 noConflict .就个人而言,对于可能必须存在于不受我控制的广泛上下文中的用户脚本之类的代码,我会避免使用范围广泛的框架,如 jQuery。

关于javascript - Opera 用户 JS 中的 jQuery 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2831322/

相关文章:

javascript - 如何用javascript替换IE8 css表达式

css - <main> 元素在 Opera、Safari、IE 中不显示填充

css - 在 Opera 中旋转

javascript - 在 UI-Router 中调用子状态时触发无限循环

javascript - 主干提取未正确提取

javascript - Codemirror 的 SCSS linter

firefox - 在 Safari 和 Opera 中应用边框图像时,背景图像不显示

javascript - Spring 是在升级他们的 JS 验证框架还是 JQuery 是更好的选择?

css - Opera 浏览器中 <img/> 元素的圆 Angular

javascript - 防止歌剧鼠标手势