0

次のようなHTMLのビットでタブ文字を検出して置き換えたい:

<code>
  something
  {    something else
  }
</code

現在、私は次のようなものを使用しています:

$(this).html(replaceAll(trim($(this).html()), "\t", "&nbsp;&nbsp;&nbsp;"));

しかし、IE は巧妙にタブ文字をスペースに変更するため、上記の操作は役に立ちません。IE の JavaScript を使用して HTML ソースのタブ文字を検出する方法を知っている人はいますか?

4

1 に答える 1

1

それで、jmaglasangは私に良い考えを与えました. 彼は、IE は pre タグの空白を尊重すると言いました。そこで、javascript で pre タグを挿入し、html を読み込んで、その後で pre タグを削除するのはどうだろうかと考えました。動作しますが、問題があります。setTimeout コールバックを使用する必要があります。コードは次のとおりです。

$("code").each(function()
{   $(this).wrap("<pre></pre>");
    var element = $(this);

    setTimeout(function()   // read the html
    {   var x = element.html().split("");
        for(n in x)
        {    alert(x[n].charCodeAt(0) + " '" + x[n] + "'");
        }
    }, 0);
});

何らかの理由で、すべての JavaScript の実行が終了するまで IE が html の再レンダリングを待機するため、setTimeout が必要です。ちなみに、setTimeout によって発行されたコールバックの実行も待機します。IEにhtmlをすぐにレンダリングさせる方法を知っていたらいいのにと思います...誰かが知っていれば、私は間違いなく感謝します。

于 2009-10-16T19:22:12.940 に答える