Greasemonkey - замените javascript src, чтобы загрузить пользовательский JS вместо страницы - PullRequest
4 голосов
/ 22 февраля 2011

В файле .js есть определенная веб-страница с переменной. Я хочу переписать URL, который будет загружен с помощью Greasemonkey, но все еще не дал никаких результатов. Код, который я использую:

window.addEventListener(
    'load', 
    function() { 
        allTextareas = document.getElementsByTagName('script');
        for (thisTextarea in allTextareas) {
            if( allTextareas[thisTextarea].getAttribute('src') == 'some url.js' ){
                 //allTextareas[thisTextarea].setAttribute('src', 'http://my custom url.js');   


            }
        }

     },
    true);

но это не работает. Можете ли вы помочь мне, или просто скажите мне, как редактировать файлы JS на определенной странице ..

1 Ответ

5 голосов
/ 22 февраля 2011

Пара вещей, сначала просто ...

(1) В GM вы не можете итерировать коллекции таким образом. Таким образом, вместо:

for (thisTextarea in allTextareas) {
    if (allTextareas[thisTextarea].getAttribute('src') == 'some url.js') {


Вы должны использовать:

for (var J = allTextareas.length - 1;  J>=0;  --J) {
    if (allTextareas[J].getAttribute('src') == 'some url.js') {
    etc.


(2) К моменту запуска Greasemonkey эти скрипты уже будут загружены.Перезапись источника тега скрипта может ничего не делать, кроме как вызвать нестабильную операцию.

Блокировать загрузку этих скриптов вообще, затем использовать GM, чтобы переписать их src - или, что еще лучше, просто создать новые теги <script>с нужным JS.

Чтобы заблокировать эти сценарии, вам потребуется новое дополнение.Вот четыре, которые могут сделать эту работу ... лучше всего, но наиболее навязчиво, во-первых:

  1. RequestPolicy
  2. Adblock Plus
  3. NoScript
  4. YesScript

Все эти дополнения имеют преимущества снижения уязвимости до плохойscripts / sites / flash и ускорения загрузки страниц.

...