我想检测并替换一些HTML中的制表符,如下所示:
<code>
something
{ something else
}
</code
现在,我正在使用这样的东西:
$(this).html(replaceAll(trim($(this).html()), "\t", " "));
但IE,尽管聪明,却将制表符改为空格,所以做上述操作是没用的。有谁知道如何使用javascript for IE检测HTML源代码中的制表符?
答案 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 ...如果有人知道我肯定会欣赏它。