这个网站有一个图像库。每次我点击缩略图时,它都会在新标签页中打开URL(不是因为我设置了firefox以在新标签页中打开链接)。我想在同一个窗口中打开URL。缩略图图像的样子就是这样。
<span class="thumb" id="789">
<a href="/post/image/12345" onclick="return PostMenu.click(12345)">
<img class="preview" src="http://abc.com/image.jpg" title="title" alt="">
</a>
</span>
我相信onclick="return PostMenu.click(12345)"
正在这样做。如何在GreaseMonkey中用我自己的空函数替换PostMenu.click()
函数?有没有办法让GreaseMonkey脚本拦截所有onclick事件?
我唯一的选择是浏览所有span
课程,并从链接标记中删除onclick="return PostMenu.click(12345)"
。但是因为在一个页面上可能有超过一百个,我宁愿不这样做。
答案 0 :(得分:4)
实际上,删除onclick
并不是一项繁重的任务。
使用jQuery,代码只是:
$("span.thumb a").prop ("onclick", null);
或者,对于旧版本的jQuery:
$("span.thumb a").removeAttr ("onclick");
完整的脚本:
// ==UserScript==
// @name _Kill select onClicks
// @include http://YOUR_SERVER/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// ==/UserScript==
$("span.thumb a").prop ("onclick", null);
这种方法的优点是:
(1)如果您需要,可以保留PostMenu.click()
,或者在其他地方保留所需的PostMenu.click()
(2)你正在从页面中删除crud,这使得它稍微不那么笨重
(3)我怀疑您可能还需要打开或修改该链接 - 在这种情况下,使用jQuery的目标重写方法是可行的方法。
如果你真的只想用你自己的空函数替换unsafeWindow.PostMenu.click = function () {};
函数,那么代码就是:
onclick
至于让Greasemonkey拦截所有{{1}}事件......这并不容易可靠。忘记这种方法,除非出于某种原因需要压倒性的(在这种情况下似乎没有)。