javascript - 去除 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。
如果您有任何建议或知道我可以添加到目标页面以完成此任务的任何功能,请告诉我。
提前致谢。
解决方案
我检查了你的网页,你的 ASP 代码肯定有一些逻辑错误。(1) 不是像<div></div>
传递给浏览器的东西,而是特殊字符的 HTML 实体,所以传递的是 like <DIV> </DIV>
,这非常难看,这就是为什么它呈现为文本而不是 HTML 代码的原因。在您的 ASP 代码中,您不得在将搜索结果文本传递给浏览器之前对其进行解析。(2) 所有这些格式不正确的代码都插入在第一个结束html
标记之后,然后在格式不正确的代码之后有结束body
和html
标记,所以在你的 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 格式和显示不正确的原因。向我们展示您的后端代码,然后我们可以为您提供帮助。
推荐阅读
- flutter - Flutter 对话式访问数据
- windows - 为什么 Docker 无法在 Windows 10 Home 中检测到 WSL 2 发行版?
- json - 在scala中合并json的一部分
- spring-boot - 没有为我的自定义事务管理器找到匹配的 PlatformTransactionManager bean
- visual-studio - 如何修复 AADSTS9002313:无效请求。请求格式错误或无效。错误
- r - 哪个版本的 R studio 与 Windows 7 32 位兼容?
- lisp - Common Lisp 中的局部变量是什么时候创建的?
- docker - 如何从 ansible 控制节点(Mac 机器)ping docker 容器
- python - Python Socket:只能将 str 而不是字节连接到 str。如何编码,这样它就不会给我这个错误?
- python - Python烧瓶应用程序无法从动态HTML模板加载本地图像