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);
});

setTimeout 是必要的,因为出于某种原因,IE 会等待重新渲染 html,直到所有 javascript 完成运行。顺便说一句,它还等待执行 setTimeout 发出的任何回调。我希望我知道如何强制 IE 立即呈现 html...如果有人知道我肯定会很感激。

于 2009-10-16T19:22:12.940 回答