2016-01-31 4 views
0

Вот блок кода, который я хочу заменить:Как изменить анонимную функцию javascript с помощью tampermonkey?

$(document).ready(function() {  
    $(".button-purple").click(function() { 
      interval = $(this).attr('id'); 
      name = $(this.attr('name'); 
      if(Number($(this).val()) === 0) { 
       if(name == 'static') { 
        do this 
       } 
       else { 
        do this 
       } 
      } 
      else { 
       do this 
      } 
    }); 

}); 

Я не могу найти любую документацию на попытку заменить функцию, так как это безымянное, хотя. Можно ли заменить весь файл javascript + удалить строку, загрузив ее/вставив мой собственный скрипт? Был бы очень признателен за любую помощь, которую я могу получить.

+0

Возможно ли, что вы можете немного поучаствовать в этом? Почему вы хотите «заменить» блок кода? Чего вы пытаетесь достичь? – AdityaParab

+0

Я пытаюсь создать сценарий, чтобы настроить сайт, который я часто посещаю, чтобы быть более приятным для себя. Я уже сделал несколько настроек, но мне нужно изменить эту функцию, чтобы добиться того, что я собираюсь сделать. – jacob404

+0

@AdityaParab ... tamper ** обезьяна ** ... ** обезьяна ** дерьмо ... смешно –

ответ

0

Если вы просто хотите, чтобы удалить обработчик события клика, а затем просто сказать

var $element = $(".button-purple"); 
$element.off('click'); 

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

var element = $element[0]; //Make sure the element is a DOM object and not jQuery Object. 

    // Use this line if you're using jQuery 1.8+ 
    var attachedEvents = $._data(element,'events'); 

    // Use this line if you're using jQuery < 1.8 
    var attachedEvents = $(element).data('events'); //Here you can also replace $(element) with $element as declared above. 

    for(var event in attachedEvents){ 
     $element.off(event); 
    } 

UPDATE:

Вы можете просто добавить свой собственный обработчик событий (с помощью .on() API) после того, как вы закончите удаление всех необходимых существующих обработчиков.

Просто определите свою функцию.

function yourFunction(){ /* your code */}; 

$element.on('click', yourFunction); 

Update 2:

Поскольку вы просто хотите удалить обработчик события клика, это самый простой код, который будет служить вашей цели.

$(".button-purple").off('click').on('click', yourFunction); 
+0

Это шаг в правильном направлении, но я бы хотел добавить мое собственное событие по щелчку. Могу ли я сделать это после удаления существующих обработчиков событий? – jacob404

0

Я не в курсе tampermonkey, но вы можете попробовать это:

function chickHandler() { 
    interval = $(this).attr('id'); 
    name = $(this.attr('name'); 
    if (Number($(this).val()) === 0) { 
     if (name == 'static') { 
     do this 
     } else { 
     do this 
     } 
    } else { 
     do this 
    } 
    } 
} 

function onReadyHandler() { 
    $(".button-purple").click(chickHandler); 
} 

$(document).ready(onReadyHandler); 

Когда вы делаете что-то вроде .click(function(){...}), здесь function называется обратным вызовом. Вы должны отправить функцию в качестве обратного вызова. Не обязательно быть анонимным.

+0

Позвольте мне объяснить немного лучше. Это функция внутри скрипта на сайте, который я часто посещаю. Я хочу локально изменить javascript, используя расширение tampermonkey (эквивалент greasemonkey) – jacob404

+0

Так что позвольте мне перефразировать то, что я понимаю. Существует внешний сайт, и вы хотите его локально изменить. Я прав? – Rajesh

+0

Правильно. Я уже сделал некоторые изменения css, но я хотел бы изменить функцию этого скрипта, чтобы сделать сайт более удобным для меня. – jacob404

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