我正在为已经使用jQuery的页面编写脚本,所以我希望该库已经存在并加载了。
但是当我检查$
定义时,虽然我认为它是假的,但是我得到一个'$ is not defined'错误(在浏览器控制台上 - Firefox Ctrl-Shift-J
)并且脚本停止了:
if ($) {
GM_log('jQuery through \'$\': ' + $.fn.jquery);
}
GM_log('end');
为什么我会这样做?为什么if
语句不会像在false
元素中那样评估为<script>
?
Greasemonkey版本:1.15
答案 0 :(得分:3)
Javascript不喜欢您尝试访问不存在的内容。你应该告诉它在哪里试试看:
if( window.$) {
// do something
}
在这种情况下,它将查找window
对象,然后查找该对象上的$
属性,并返回undefined
,安全知道至少它在查看正确的地方。
但是请注意,window.$
不是检测jQuery的可靠方法 - 如果你在我的网站上运行它,你会得到“无法访问未定义的属性'jquery',因为$
被定义为“在</body>
”函数之前执行的“队列”。