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

时间:2016-01-31 10:21:19

标签: 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文件+删除加载它/插入我自己的脚本的行?非常感谢我能得到的任何帮助。

2 个答案:

答案 0 :(得分: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被称为回调。您必须将函数作为回调发送。没有必要匿名。

答案 1 :(得分: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);
    }

更新:

在您完成删除所有必需的现有处理程序后,您只需添加自己的事件处理程序(使用.on() API)。

只需定义你的功能。

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

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

更新2:

由于您只想删除click事件处理程序,因此这是最简单的代码,可以满足您的需求。

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