[英]Script ok with Greasemonkey but does not work with Tampermonkey. Is it because of jQuery $.get?
I made a script for Greasemonkey on Firefox, it works perfectly, but nothing happens on Chrome with Tampermonkey. 我在Firefox上为Greasemonkey编写了一个脚本,它可以完美运行,但是在带有Tampermonkey的Chrome上什么也没有发生。
I know that Chrome restricts the use of jQuery. 我知道Chrome限制了jQuery的使用。
I especially found this interesting post : How can I use jQuery in Greasemonkey scripts in Google Chrome? 我特别发现了这个有趣的帖子: 如何在Google Chrome浏览器的Greasemonkey脚本中使用jQuery?
I tried the solutions but I still can not get my script to run on Google Chrome. 我尝试了解决方案,但仍无法使我的脚本在Google Chrome上运行。 I do not really see what's wrong with my script, because it is really short.
我真的看不出我的脚本有什么问题,因为它确实很短。 What could be the problem?
可能是什么问题呢?
This is the script I'm trying to run (I shortened it but I am obliged to leave much since I do not know where is the problem): 这是我要运行的脚本(我将其缩短了,但由于不知道问题出在哪里,所以不得不离开很多):
// ==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++;
}
The only thing that can be a problem is $.get, is not it? 唯一可能是问题的是$ .get,不是吗?
I tried different solutions, ask loading jQuery before executing my script, I tried with the proposed template but it definitely did not work, and I do not see why. 我尝试了不同的解决方案,要求在执行脚本之前先加载jQuery,我尝试使用建议的模板,但它肯定无法正常工作,我不知道为什么。
If you want to use jQuery version that is embedded on this website, you need to refer to it with unsafeWindow
. 如果要使用此网站上嵌入的jQuery版本,则需要使用
unsafeWindow
进行引用。 In other words: you need to define $
as unsafeWindow.$
at the beginning of your userscript. 换句话说:您需要在用户脚本的开头将
$
定义为unsafeWindow.$
。
Here's fixed code: 这是固定代码:
// ==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++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.