javascript - 在 Greasemonkey 脚本中检查 $ 会抛出 '$ is not defined' 并且脚本会停止 : why?

标签 javascript jquery greasemonkey

我正在为已经使用 jQuery 的页面编写一个脚本,因此我希望该库已经存在并加载。 但是当我检查$时定义,虽然我希望它是 false,但我收到“$ 未定义”错误(在浏览器控制台上 - Firefox Ctrl-Shift-J )并且脚本停止:

if ($) {
    GM_log('jQuery through \'$\': ' + $.fn.jquery);
}
GM_log('end');

为什么我会出现这样的行为?为什么不if语句的计算结果为 false就像在普通 <script> 中一样元素?

油猴版本:1.15

最佳答案

Javascript 不喜欢你尝试访问不存在的东西。您应该告诉它在哪里尝试查看:

if( window.$) {
    // do something
}

在这种情况下,它将查找 window对象,然后为$该对象的属性,并返回 undefined ,至少知道它看起来在正确的位置,这是安全的。

但请注意 window.$不是检测 jQuery 的可靠方法 - 如果您要在我的网站上运行它,您会得到“无法访问未定义的属性‘jquery’”,因为 $被定义为“在</body>”函数之前执行的队列。

关于javascript - 在 Greasemonkey 脚本中检查 $ 会抛出 '$ is not defined' 并且脚本会停止 : why?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21802959/

相关文章:

javascript - 为什么动态创建的图像的自然宽度为 0

javascript - 如何使用 Greasemonkey 调用现有视频的 Youtube-Flash-API

php - Greasemonkey 脚本将 JavaScript 变量与另一个页面的内容进行比较?

javascript - SVG defs 上的鼠标事件( mask )

javascript - 如何在使用 jQuery 追加之前克隆、修改(增加一些元素)?

javascript - 在小屏幕上隐藏/显示标题,但在大屏幕上保持 Jquery/CSS

javascript - 动态图片灯箱

javascript - 使用 Greasemonkey 脚本从其他站点向页面添加 javascript

Javascript - Google map - 自动填充

jQuery.当理解时