在IE中用javascript检测制表符

时间:2009-10-16 08:53:41

标签: javascript internet-explorer tabs character

我想检测并替换一些HTML中的制表符,如下所示:

<code>
  something
  {    something else
  }
</code

现在,我正在使用这样的东西:

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

但IE,尽管聪明,却将制表符改为空格,所以做上述操作是没用的。有谁知道如何使用javascript for IE检测HTML源代码中的制表符?

1 个答案:

答案 0 :(得分:1)

所以,jmaglasang给了我一个好主意。他说IE在预标签中尊重空格。所以,我想为什么不用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 ...如果有人知道我肯定会欣赏它。