首页 > 解决方案 > 去除 DIV 中的 HTML 元素

问题描述

我在我们的一个旧网站上有一个简单的搜索引擎。该站点在 Windows Server 2003 上运行 IIS 6.0。搜索功能由 Microsoft 索引服务提供。

您可以在我们的网站上看到搜索功能。(只需输入“扬声器”,您就会看到一些热门歌曲。

我想使用索引服务提供的“FullHit”功能。使用此功能时,索引服务会在目标网页的“begindetail”和“enddetail”之间插入完整的命中结果。

我遇到的问题是返回的文档有 HTML。这看起来很乱。(只需点击上面搜索结果中的“Hit Locator Tool”即可了解我的意思。)

我想创建一个 DIV 部分,例如...

<DIV name="target">

     begindetail

     enddetail

 </DIV>

然后,在填充页面后,我想使用 javascript 去除打开和关闭 DIV 之间的所有 HTML 元素(但不是数据)。

例如,<FONT color="magenta">Good Data</FONT>将被修改为仅显示Good Data.

如有必要,我也可以使用 Classic ASP。

如果您有任何建议或知道我可以添加到目标页面以完成此任务的任何功能,请告诉我。

提前致谢。

标签: javascripthtmlstrip-tags

解决方案


我检查了你的网页,你的 ASP 代码肯定有一些逻辑错误。(1) 不是像<div></div>传递给浏览器的东西,而是特殊字符的 HTML 实体,所以传递的是 like &ltDIV&gt &lt/DIV&gt,这非常难看,这就是为什么它呈现为文本而不是 HTML 代码的原因。在您的 ASP 代码中,您不得在将搜索结果文本传递给浏览器之前对其进行解析。(2) 所有这些格式不正确的代码都插入在第一个结束html标记之后,然后在格式不正确的代码之后有结束bodyhtml标记,所以在你的 ASP 代码的某个地方,你告诉它将代码附加到末尾文档,而不是将其插入到原始<body></body>.

如果您想将 HTML 实体、<br>标签和文本的混合解码为呈现的 HTML,此 JavaScript 可能会起作用:

window.onload = function() {
    var text = decodeHTMLEntities(document.body.innerText);
    document.write(text);
}

function decodeHTMLEntities(text) {
    var entities = [
        ['amp', '&'],
        ['apos', '\''],
        ['#x27', '\''],
        ['#x2F', '/'],
        ['#39', '\''],
        ['#47', '/'],
        ['lt', '<'],
        ['gt', '>'],
        ['nbsp', ' '],
        ['quot', '"']
    ];

    for (var i = 0, max = entities.length; i < max; ++i) 
        text = text.replace(new RegExp('&'+entities[i][0]+';', 'g'), entities[i][1]);

    return text;
} 

jsFiddle:https ://jsfiddle.net/6ohc1tkr/

首先,您需要修复您的 ASP 代码,或任何您用来解析然后显示搜索结果的代码。这就是导致 HTML 格式和显示不正确的原因。向我们展示您的后端代码,然后我们可以为您提供帮助。


推荐阅读