0

onmousedown属性を削除するGreasemonkey/Tampermonkeyのユーザースクリプトを開発していますGoogle検索結果ページのタグ。

プラグインは、スクリプトが実行中であり、スクリプトが実行されていることを示しますが、何も起こりません。

コンソールを開いて手動で実行しようとしましたが、セレクターは最初のコンソールのみを選択しますページで。

私は試しました:

$("a")
$("a.l")
$(".l")

また、document-start、document-body、document-endでユーザースクリプトの位置を変更しようとしましたが、結果は同じです。一致する最初の要素のみが返されます。

スクリプトコード:

// ==UserScript==
// @name       Google onmousedown remove
// @version    0.1
// @include      /^https?://[a-z]*\.?google\.[a-z\.]+/search.*/
// @require http://code.jquery.com/jquery-1.9.1.min.js
// @run-at     document-end
// ==/UserScript==

$(document).ready(function (){
    $("a.l").each(function (){ $(this).removeAttr("onmousedown"); });
});

問題はどこにありますか?ありがとう。

4

1 に答える 1

3

検索ページにあるコンソールに入力しようとすると、jQueryで定義されている$通常とは異なるものが表示されます。function (e,t){return new i.fn.init(e,t,u)}それで...

Googleが独自の$関数を定義しているようで、動作も異なります。最も簡単な解決策は、:の代わりに明示的に使用することjQueryです。$jQuery('a.l')

しかし、それは長すぎるので、これがjQueryからのトリックです。document.readyの代わりに、jQuery関数を呼び出して、引数付きの関数を渡します$。次に、この関数の内部$はに等しくなりjQueryます。

jQuery(function ($){
    $("a.l").each(function (){ $(this).removeAttr("onmousedown"); });
});

テストされていませんが、動作するはずです。

于 2013-02-05T17:38:21.793 に答える