2014-02-09 4 views
1

Сценарий Greasemonkey работает точно так, как я хочу, но он каким-то образом блокирует javascripts с самого сайта. Они больше не работают.Сценарий Greasemonkey, блокирующий другие скрипты веб-сайта

Я использую очень полезный waitForKeyElements(), чтобы начать некоторые действия после загрузки определенного контейнера.

Что мешает другим сценариям?

// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js 
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 
// @grant   none 
// ==/UserScript== 

var newText = 'changed'; 

// changes after loading .containerid 
waitForKeyElements (
    "#containerid", renameTop 
); 

function renameTop() { 
    var searchlinkTop = document.getElementById('containerid'); 
     searchlinkTop.innerHTML = newText; 
} 

// some normal changes 

function waitForKeyElements (
// ... the script's content 

ответ

1

См. "jQuery in Greasemonkey 1.0 conflicts...".
Проблема @grant none. Это очень плохой «особенностью» Greasemonkey, который гарантирует, что у вас будут конфликты и ошибки. Вам просто повезло, что на этот раз было так очевидно и сразу.

Изменить @grant none@grant GM_addStyle. Это восстановит песочницу и устранит конфликт.

+0

Ничего себе, спасибо! Он работал для этого скрипта. –

+0

Вау, спасибо! Он отлично работал для моего маленького сценария. Но у меня есть еще один большой скрипт, который также страдает от этой проблемы в течение нескольких месяцев. Конечно, я тоже попробовал ваш совет, но он разрушает весь сценарий ...? Существуют ли исключения из этого подхода? Более крупный сценарий использует, например, // @require http://github.com/sizzlemctwizzle/GM_config/raw/master/gm_config.js GM_xmlhttpRequest ({method: "GET", url: http://ajax.googleapis.com/ajax/ libs/jquery/1.3.2/jquery.min.js ', onload: ...;}}); GM_registerMenuCommand (...); window.addEventListener ("load", Gm_main, false); $ ('div.twitter'). Remove(); –

+0

Этот второй скрипт использует несколько функций 'GM_'. Вам нужно добавить директиву '@ grant' для каждой функции' GM_'. Кроме этого, откройте новый вопрос для второго скрипта (после проверки этого ответа в качестве ответа). –

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