【问题标题】:detect tab characters with javascript in IE在 IE 中使用 javascript 检测制表符
【发布时间】:2009-10-16 08:53:40
【问题描述】:

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

<code>
  something
  {    something else
  }
</code

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

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

但 IE 非常聪明,会将制表符更改为空格,因此上述操作毫无用处。有谁知道如何使用 IE 的 javascript 检测 HTML 源代码中的制表符?

【问题讨论】:

  • 制表符,IE 忽略空格,除了
     和 input/textearea 标签,只是好奇什么元素是(这个)?你指的是窗户吗?
  • 实际上,它在一个 标签中。我会用这个更新我的问题。
  • jmaglasang,这给了我一个好主意。我试过 $("code").wrap("
    ");然后阅读 html() 。直到我将 html 的读取放入 setTimeout 回调中,它才起作用。我会添加这个作为答案。

标签: javascript internet-explorer tabs character


【解决方案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...如果有人知道,我一定会很感激。

【讨论】:

  • 一个问题。显然,由于某种原因,这无助于检测换行符。即使它们可以在预标签中检测到,插入像这里这样的预标签并不能解决换行符...
猜你喜欢
  • 2013-09-23
  • 1970-01-01
  • 2011-05-11
  • 2014-09-04
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多