如何使用 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);
这是我要替换的代码块:
$(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);