4

Я создал сценарий для Greasemonkey в Firefox, он отлично работает, но ничего не происходит в Chrome с Tampermonkey.

Я знаю, что Chrome ограничивает использование jQuery.

Я особенно нашел этот интересный пост: How can I use jQuery in Greasemonkey scripts in Google Chrome?

Я попытался решения, но я до сих пор не могу получить скрипт для запуска на 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 перед выполнением моего скрипта, я пробовал с предложенным шаблоном, но он определенно не работал, и я не понимаю, почему.

ответ

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++; 
} 
+0

Благодарим Вас за Тобой интересуется моей проблемой. К сожалению, я уже пробовал это решение, и оно не сработало. Я попробовал снова, предупреждение() отображается правильно, но остальное, нет. – Delgan

+0

Но функция '$ .get' отлично работает, и в этом была ваша проблема. Итак, что именно вы имеете в виду? Что отображается неправильно? Также, пожалуйста, дайте мне пример url, где я могу полностью протестировать этот скрипт. – ghost

+0

К сожалению, это французский wbesite: http://www.jeuxvideo.com/forums/1-51-42148021-1-0-1-0-qui-utilise-firefox-ici.htm Вы должны быть поэтому, попробуйте с этими ID: nickname = "Vlalprolo" и password = "kourkis87" Если скрипт работает нормально, вы должны увидеть icone "!" справа от первого столбца синий, а не красный. – Delgan

Смежные вопросы