如何使用 tampermonkey 修改匿名 javascript 函数?

How can I modify an anonymous javascript function with 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 文件+删除加载它的行/插入我自己的脚本?非常感谢我能得到的任何帮助。

我不知道 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被称为回调。您必须发送一个函数作为回调。不必匿名。

如果您只想删除点击事件处理程序,那么只需说

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);
    }

更新:

在删除所有必需的现有处理程序后,您可以简单地添加自己的事件处理程序(使用 .on() API)。

只需定义您的函数。

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

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

更新 2:

由于您只想删除点击事件处理程序,因此这是最简单的代码,可以达到您的目的。

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