-1

サイト上のすべての onmousedown を ondblclick に置き換えるグリースモンキー スクリプトを見つけようとしています。ページはAJAXを使用して更新されるため、1.5秒ごとのように常に更新する必要があります。

これは私が思いついたスクリプトですが、機能していないようです。

window.setInterval(document.body.innerHTML= document.body.innerHTML.replace('onmousedown','ondblclick');,1500);

動作するページは内部使用のみです。ただし、良い例は Google 検索です。この場合、結果のリンクに onmousedown を使用して、クリックする前に URL を交換します。

また、document.body.innerHTML.replace の後にセミコロンを付けずに試してみました。

私は JavaScript にまったく慣れていませんが、会社でコーディングできるのは私だけなので、これは私に行き詰まっています。

どんな助けでも大歓迎です。

また、小さな「補足質問」@exclude を使用する必要がありますか、それとも @include internal.companysite.tld* のみを使用するだけで十分なので、このサイトでのみ機能しますか?

4

1 に答える 1

-1

直接的な答え: setInterval に関数を提供する必要があります。変数を設定して、後で必要に応じて clearInterval() でキャンセルできるようにすることをお勧めします。

function myF(){document.body....;}
var myIntv = setInterval(myF, 1500);

あなたがしようとしているように、匿名関数を1行で使用してそれを行うこともできます...次のようにします:

var myIntv = setInterval(function(){document.body....;}, 1500);

これを問題の解決策として提案するつもりはありません。あなたがやりたいように聞こえるのは、実際に UI を変更するのではなく、アクティブな DOM を操作することです。おそらく次のようなものが必要です。

var objs = document.getElementsBy__(); // ById/ByName/etc - depends on which ones you want
for (var i in objs){objs[i].ondblclick = objs[i].onmousedown;objs[i].onmousedown = undefined;} // just an example - but this should convey the basic idea

さらに良いことに、jQuery を使用できる場合は、適切なノードをより簡単に選択し、より管理しやすい方法でイベント ハンドラーを操作できます。

$(".class.for.example").each(function(){this.ondblclick = this.onmousedown;this.onmousedown = undefined;}); // just an example - there are multiple ways to set and clear these
于 2013-10-03T22:52:08.533 に答える