我们正在尝试编写一个脚本,用其内容替换已弃用的标记,例如<font>
。我们所拥有的是:
while($("font").length > 0) {
$("font").each(function() {
$(this).replaceWith($(this).html());
});
}
while循环只是因为如果用它的内容替换字体标记,并且其中一个元素子元素也是一个字体标记,那么它就会捕获父元素和子元素。
我们的问题是我们无法控制输出的内容 - 这是由我们的客户输入的。我们最近看到的格式错误的HTML的一个例子是<p><font><span><font><div></font><strong></strong><strong></div></span></font></p>
。显然这是严重畸形的,在理想的世界中,我们的客户会正确地输入它。上述脚本在所有不错的浏览器中都能完美地运行 - Chrome,Firefox&amp; Safari - 令人惊讶的是IE 9.然而它在IE 6-8中断,导致这些标签中的所有内容都没有显示。我们的目标是更换所有字体标签,并且仍然显示其中的内容。
有没有人知道我们能用jQuery或经典ASP达到预期效果的方式吗?
另请注意,在此特定客户端案例中,它非常基本 - 仅请求替换1个标记。其他情况包括Word将文本从Word传输到网站时添加的标记<i>
,<b>
,<span>
等等。
提前致谢, 问候, 理查德
答案 0 :(得分:0)
更换所有&lt; font&gt;会不会更容易?和&lt; / font&gt;输出中的标签?在给定的情况下,这仍然不会提供验证的XHTML代码(&lt; div&gt;在&lt; span&gt;,unclosed&lt; strong&gt;内),但也许只需查看文本即可。
以下是使用regexp在经典ASP中执行此操作的方法:
function removeFontTags(s_text)
dim obj_regex
set obj_regex = new RegExp
obj_regex.IgnoreCase = true
obj_regex.Global = true
obj_regex.Pattern = "\<\/?font\>"
removeFontTags = obj_regex.replace(s_text, "")
set obj_regex = Nothing
end function
Response.Write removeFontTags("<p><font><span><font><div></font><strong></strong><strong></div></span></font></p>")
' returns: <p><span><div><strong></strong><strong></div></span></p>
但也许您可以通过这种方式添加更多卫生设施来展示您的需求。