4

我在 Firefox 上为 Greasemonkey 制作了一个脚本,它运行良好,但在带有 Tampermonkey 的 Chrome 上没有任何反应。

我知道 Chrome 限制了 jQuery 的使用。

我特别发现了这篇有趣的帖子:如何在 Google Chrome 的 Greasemonkey 脚本中使用 jQuery?

我尝试了解决方案,但仍然无法让我的脚本在 Google Chrome 上运行。我真的看不出我的脚本有什么问题,因为它真的很短。可能是什么问题呢?

这是我要运行的脚本(我缩短了它,但我不得不留下很多,因为我不知道问题出在哪里):

// ==UserScript==
// @name        Rainbow DDB
// @namespace   Rainbow DDB
// @description Change la couleur du "!" lorsqu'une DDB est en cours.
// @include     http://www.jeuxvideo.com/forums/3-*
// @include     http://www.jeuxvideo.com/forums/1-*
// @version     1
// ==/UserScript==

dates = document.getElementsByClassName("date");
i=0;

function ddb(j) {
    url = dates[j].getElementsByTagName("a")[0].href;
    $.get(url, function(data) {
        if (data.contains("Signalement déjà fait")) {
            document.getElementsByClassName("date")[j].getElementsByTagName("a")[0].getElementsByTagName("img")[0].src = "http://image.noelshack.com/fichiers/2013/17/1367080939-14agd2.png";
        }
    });
}

while (i<dates.length) {
    ddb(i);
    i++;
}

唯一可能出问题的是 $.get,不是吗?

我尝试了不同的解决方案,在执行我的脚本之前询问加载 jQuery,我尝试了建议的模板,但它肯定不起作用,我不明白为什么。

4

1 回答 1

6

如果您想使用本网站内嵌的 jQuery 版本,您需要使用unsafeWindow. 换句话说:您需要在用户脚本的开头定义$为。这是固定代码:unsafeWindow.$

// ==UserScript==
// @name        Rainbow DDB
// @namespace   Rainbow DDB
// @description Change la couleur du "!" lorsqu'une DDB est en cours.
// @include     http://www.jeuxvideo.com/forums/3-*
// @include     http://www.jeuxvideo.com/forums/1-*
// @version     1
// ==/UserScript==


$ = unsafeWindow.$;
dates = document.getElementsByClassName("date");
i=0;

function ddb(j) {
    url = dates[j].getElementsByTagName("a")[0].href;
    $.get(url, function(data) {
        if (data.indexOf("Signalement déjà fait") >= 0) {
            document.getElementsByClassName("date")[j].getElementsByTagName("a")[0].getElementsByTagName("img")[0].src = "http://image.noelshack.com/fichiers/2013/17/1367080939-14agd2.png";
        }
    });
}


while (i<dates.length) {
    ddb(i);
    i++;
}
于 2013-04-27T21:32:16.527 回答