6

このウェブサイトには画像のギャラリーがあります。サムネイル画像をクリックするたびに、新しいタブで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)"います。PostMenu.click()この関数をGreaseMonkeyで自分の空の関数に置き換えるにはどうすればよいですか?GreaseMonkeyスクリプトにすべてのonclickイベントをインターセプトさせる方法はありますか?

私の他の唯一のオプションは、すべてのspanクラスを調べてonclick="return PostMenu.click(12345)"、リンクタグからを削除することです。ただし、1ページに100を超える可能性があるため、そうはしません。

4

1 に答える 1

4

実際、onclicksを削除することはまったく面倒な作業ではありません。

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)必要な場合、または必要な場合に備えて、他の場所に
保存します。 (2)ページからクラッドを削除するため、扱いにくくなります。 (3)そのリンクをアンラップまたは変更する必要があるかもしれないと思います。その場合は、jQueryを使用したターゲットを絞った書き換えアプローチが最適です。PostMenu.click()


PostMenu.click()関数を自分の空の関数に置き換えたいだけの場合、そのコードは次のとおりです。

unsafeWindow.PostMenu.click = function () {};

Greasemonkeyにすべてのonclickイベントをインターセプトさせることに関しては...それを確実に行うのは簡単ではありません。何らかの理由で圧倒的なニーズがない限り、そのアプローチを忘れてください(この場合はそうではないようです)。

于 2012-04-27T11:23:29.730 に答える