对于此测试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');

最佳答案

GreaseMonkey manual中所述,在GreaseMonkey脚本中,脚本的全局上下文不是浏览器的实际窗口对象(与在页面上执行的实际脚本不同),而是具有相同API的窗口对象的虚拟版本。

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

请参阅此页面,以获取有关GreaseMonkey下console的最新信息以及如何记录来自GreaseMonkey的消息的说明。

关于javascript - 为什么在Greasemonkey示例中针对此jQuery触发alert()而不触发console.log()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10377473/

10-11 12:37