Изменить код сайта jQuery с помощью Greasemonkey - PullRequest
1 голос
/ 20 января 2011

Как изменить или переопределить код jQuery сайта с помощью Greasemonkey.Библиотека jQuery уже загружена сайтом, и я хотел бы изменить / изменить пользовательский код jQuery.Как мне переопределить его с помощью Greasemonkey?

Например, я хотел бы переопределить этот код (написанный на сайте):

  $('.side-nav-flyout').hover(function() {
        $(this).children('ul').fadeIn();
    }, function() {
        $(this).children('ul').fadeOut();
    });

С помощью этого (моего переопределения):

 $('.side-nav-flyout').hover(function() {
    $(this).children('ul').show();
}, function() {
    $(this).children('ul').hide();
});

В частности, куда вы помещаете код переопределения в сценарий пользователя, и нужно ли мне оборачивать его в документ?

Ответы [ 3 ]

1 голос
/ 20 января 2011

Что если вы хотите отменить привязку к событию парения, а затем заново связать его с вашим?

$('.side-nav-flyout').unbind('hover').hover(function() {
    $(this).children('ul').show();
}, function() {
    $(this).children('ul').hide();
});
1 голос
/ 21 января 2011

Если у вас все в порядке с полным перекрытием методов .fadeIn() и .fadeOut() страницы, вы всегда можете воспользоваться методом "грубой силы":

unsafeWindow.$.fn.fadeIn = unsafeWindow.$.fn.show;
unsafeWindow.$.fn.fadeOut = unsafeWindow.$.fn.hide;
0 голосов
/ 20 января 2011

Согласно часто задаваемым вопросам Greasemonkey ...

Greasemonkey позволяет добавлять JavaScript код (называемый «пользовательские скрипты») для любого веб-страница, которая будет работать, когда его HTML код загружен.

Это не позволит вам заменить любой код, который выполняется до скриптов Greasemonkey. Это позволяет вам перезаписывать все, что будет доступно или выполнено в будущем, например, глобальные переменные, свойства объекта и функции. Я всегда думаю об этом как: «После загрузки страницы я хочу изменить X, Y и Z». Используя ваш пример, если этот код был в функции, подобной этой:

function ShowItems() {
    $("div.fadeList").each(function() {
        $(this).children('ul').fadeIn();
    });
}

вы можете перезаписать его, чтобы при последующих вызовах ваш код запускался ...

function ShowItems() {
    $("div.fadeList").each(function() {
        $(this).children('ul').show();
    });
}

Если вы просто хотите изменить страницу по своему вкусу, вы можете просто сделать что-то вроде этого:

$("div.fadeList ul).show();
...