2009-07-20 14 views
2

私がしたいことは、JSブックマークレット/ greasemonkeyスクリプトのウェブページの「foo」のすべてのインスタンスを「bar」に置き換えることです。これどうやってするの?私は、ブックマークレットとgreasemonkeyスクリプトの両方にそれらを含めるためのハックがあるので、jQueryが動作すると思います。javacriptを使用してWebページを検索して置換する

+1

「怠け者ではない」 - 努力なしにあなたに来ると思います! あなたのタイトルに、人々があなたの質問を見つけるのに役立つのに十分な情報を要約してください。体の詳細を提供する。 –

+0

あなたはそれを分割する良い方法が何であるかの例を教えてください。申し訳ありません、これに新しい! –

答えて

12

このスクリプトは、ドキュメント内の各要素を反復処理し、fooのすべてのインスタンスをbarに置き換えます。

正規表現のgi修飾子は、global,の検索を行います。

var els = document.getElementsByTagName("*"); 
for(var i = 0, l = els.length; i < l; i++) { 
    var el = els[i]; 
    el.innerHTML = el.innerHTML.replace(/foo/gi, 'bar'); 
} 

あなたはあなたの選択(例えば"p""td")のタグ名に"*"を変更することで、特定のタグ名をターゲットにすることができます。

+3

なぜ、 'document.body.innerHTML.replace(/ foo/gi、 'bar');'なのですか?あなたが示唆しているように、すべての要素を取得すると、要素がネストされたときに再帰的な置換が行われる可能性があります。 –

+1

@ændrükは '' document.body.innerHTML = document.body.innerHTML.replace(/ foo/gi、 'bar') ''でなければなりません。 [コメント](http://stackoverflow.com/a/29316601/1933185)を参照してください。 – jerik

+1

各要素の子要素を含むinnerHTMLを変更することは、addEventListenerと要素参照を使用するページの多くまたはほとんどを破損するため、非常に悪いアドバイスです。 TreeWalker APIを使用する:[Tampermonkeyを使って、URLに影響を与えずに、クラスやIDを探すことなく多くのテキスト用語を置き換える](// stackoverflow.com/a/24419809) – wOxxOm

関連する問題