我正在为已经使用 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/