簡體   English   中英

為什么在Greasemonkey示例中為此jQuery觸發alert()但不觸發console.log()?

[英]Why does alert() fire but not console.log() for this jQuery in Greasemonkey example?

對於此測試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手冊中所述,在GreaseMonkey腳本中,腳本的全局上下文不是瀏覽器的真實窗口對象(與在頁面上執行的實際腳本不同),而是具有相同API的窗口對象的虛擬版本。

console對象是真實窗口上的全局變量,因此無法從GreaseMonkey(或至少從GreaseMonkey上的jQuery)訪問。

有關GreaseMonkey下console內容的說明以及如何從GreaseMonkey記錄消息,請參閱此頁面。

如果頁面本身沒有任何<script>標簽,那可能是因為Firebug注入控制台對象愚蠢方式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM