1

对于此测试 Greasemonkey UserScript,会弹出警报,但 Firebug 控制台不会记录任何内容。
这是 Firefox 12.0 中的 Greasemonkey 0.9.18 和 Firebug 1.9.1。

// ==UserScript==
// @name           test
// @namespace      tester12354
// @include        *
// @require        http://code.jquery.com/jquery-latest.min.js
// ==/UserScript==

(function($) {
    $.fn.tester1 = function(test) {
        alert(test);
        console.log(test);
    }
}(jQuery));


$.extend({
    tester2: function(test) {
        alert(test);
        console.log(test);
    }
});

alert($().jquery)
console.log($().jquery) 

$().tester1('from tester1');
$.tester2('from tester2');
4

2 回答 2

2

正如在GreaseMonkey 手册中所解释的那样,在 GreaseMonkey 脚本中,脚本的全局上下文不是浏览器的真实窗口对象(与在页面上执行的实际脚本不同),而是具有相同 API 的窗口对象的虚拟版本。

console对象是真实窗口上的全局变量,因此无法从 GreaseMonkey(或至少从 GreaseMonkey 上的 jQuery)访问。

console有关GreaseMonkey 下的内容以及如何记录来自 GreaseMonkey 的消息的说明,请参阅此页面。

于 2012-04-30T14:07:52.863 回答
1

如果页面本身没有任何<script>标签,可能是因为Firebug 注入控制台对象的愚蠢方式

于 2012-04-30T10:20:18.817 回答