Jac*_*ack 6 javascript greasemonkey
这个网站有一个图像库.每次我点击缩略图时,它都会在新标签页中打开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>
Run Code Online (Sandbox Code Playgroud)
我相信这样onclick="return PostMenu.click(12345)"
做.如何PostMenu.click()
在GreaseMonkey中用我自己的空函数替换该函数?有没有办法让GreaseMonkey脚本拦截所有onclick事件?
我唯一的另一个选择是遍历所有span
类并onclick="return PostMenu.click(12345)"
从链接标记中删除.但是因为在一个页面上可能有超过一百个,我宁愿不这样做.
实际上,删除onclick
s 并不是一件繁重的任务。
使用 jQuery,代码将仅为:
$("span.thumb a").prop ("onclick", null);
Run Code Online (Sandbox Code Playgroud)
或者,对于旧版本的 jQuery:
$("span.thumb a").removeAttr ("onclick");
Run Code Online (Sandbox Code Playgroud)
一个完整的脚本:
// ==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);
Run Code Online (Sandbox Code Playgroud)
这种方法的优点是:
(1)您可以保留PostMenu.click()
它以备不时之需,或者在其他地方需要它,
(2)您可以从页面中删除CRUD,这使得它稍微不那么笨拙。
(3) 我怀疑您可能还需要解开或修改该链接——在这种情况下,使用 jQuery 的有针对性的重写方法是可行的方法。
如果您真的只想用自己的空函数替换该PostMenu.click()
函数,则代码如下:
unsafeWindow.PostMenu.click = function () {};
Run Code Online (Sandbox Code Playgroud)
至于让 Greasemonkey 拦截所有onclick
事件……这并不容易可靠地做到。除非出于某种原因有压倒性的需求(在本例中似乎没有),否则请忘记这种方法。