5

JavaScript を使用して Web ページ (実行したい Web ページ) のテキストを置き換えたいと考えています。私は JavaScript の専門家ではないので、途方に暮れています。私がそれを助けることができるなら、私はjQueryを避けたいです.

Google を通じて、このスタックオーバーフローの質問を見つけました。しかし、ウェブページに挿入document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');すると、ページがめちゃくちゃになります。ページを基本的なテキストとフォーマットに戻すようです。

また、 hereの正規表現コードを使用できるかどうか疑問に思っています。繰り返しますが、私はそれを使用する方法が本当にわかりません。リンクやファイル名ではなく、ウェブページのテキストのみを置き換えます。

問題が発生した場合に備えて、Google Chrome を使用しています。

4

2 に答える 2

2

最近、同様の問題を実行する必要があり、次のようなものを思いつきました。

<!DOCTYPE html>
<html>
<head>
  <title>HTML JS REPLACE</title>
  <script type="text/javascript">
  function convert(elem) {
    var content = document.getElementById(elem).innerHTML; // get HTML content for the given element
    var pattern = new RegExp(/hello/gi);
    content = content.replace(pattern,'hi');
    document.getElementById(elem).innerHTML = content; // put the replace content back
  }
  </script>
</head>
<body>
  <div id="content">
    Some text that includes both hello and hi. And a hello.
  </div>
  <script type="text/javascript">
    window.onload = convert('content');
  </script>
</body>
</html>

その結果、次のようなページが表示されます。

hi と hi の両方を含むテキスト。そしてこんにちは。

元の情報源はまだ言っていますが:

hello と hi の両方を含むテキスト。そしてこんにちは。

トリッキーな部分はほんの一部です。まず、body の下部に window.onload トリガーを含めて、JS を実行する前に DOM を完全にロードします。次に、JS から参照できる一意の ID を割り当てるトップレベルのブロック要素が必要です。第 3 に、convert 関数は正規表現を使用します。この正規表現は、文字列「hello」を「hi」に変更することで、大文字と小文字を区別しないグローバルな置換を実行します。

特定のアプリケーションでは、代わりにすべての発生をキャプチャしてループで解析する必要がある場合があります。これにより、パフォーマンスの問題が発生する場合と発生しない場合があります。気をつけて :)

于 2013-08-27T20:32:19.110 に答える