代码之家  ›  专栏  ›  技术社区  ›  B T

在IE中使用javascript检测制表符

  •  0
  • B T  · 技术社区  · 15 年前

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

    <code>
      something
      {    something else
      }
    </code
    

    现在,我正在使用这样的工具:

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

    但是,也就是说,在其所有的聪明,改变标签字符为空格,所以做上面是无用的。有人知道我如何用Javascript for IE检测HTML源代码中的制表符吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   B T    15 年前

    所以,吉马拉格松给了我一个好主意。他说IE在预标记中尊重空白。所以,我想,为什么不用javascript插入一个预标记,读取HTML,然后删除预标记呢?它可以工作,但有一个陷阱-你必须使用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);
    });
    

    设置超时是必要的,因为出于某种原因,即等待重新呈现HTML,直到所有javascript完成运行。顺便说一下,它还等待执行由setTimeout发出的任何回调。我希望我知道我如何能强迫IE立即呈现HTML…如果有人知道,我一定会感激的。