首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断html字符串是否包含内容而不仅仅是标签?

问如何判断html字符串是否包含内容而不仅仅是标签?
EN

Stack Overflow用户
提问于 2018-11-22 21:10:16
回答 1查看 37关注 0票数 0

如何判断html字符串是否包含内容(文本、图像、视频标签等),而不仅仅是标签(例如,空表、空div、空格、nbsp等)

我需要能够做到这一点在javascript中,在浏览器中,它需要支持IE8。我已经得出结论,解析html是解决这个问题的最佳方法。如果有其他方法可以工作,我也会对此感兴趣。Regex是不可接受的。

关键的是,我需要它在检查时不运行javascript。像<script>alert(1)</script>和<img src=x onerror=alert(1)/>这样的东西不应该发出警报。这一直是IE8的主要停靠点。IE9有document.implementation.createHTMLDocument,IE10和更高版本有html的DOMParser,这两个都不能运行JS,但我找不到IE8的解决方案。

我认为最好的办法是找到一个基于javascript的html解析器,但是我看过的所有的解析器都是Node的,或者不支持IE8。

EN

回答 1

Stack Overflow用户

发布于 2018-11-22 21:14:16

您可以使用下面的代码来解析IE8中的html字符串:

代码语言:javascript
复制
var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
xmlDocument.async = false;
xmlDocument.loadXML(str);

要检测IE版本,请使用此函数:

代码语言:javascript
复制
function getInternetExplorerVersion()
// Returns the version of Windows Internet Explorer or a -1
// (indicating the use of another browser).
{
   var rv = -1; // Return value assumes failure.
   if (navigator.appName == 'Microsoft Internet Explorer')
   {
      var ua = navigator.userAgent;
      var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
      if (re.exec(ua) != null)
         rv = parseFloat( RegExp.$1 );
   }
   return rv;
}

和用法:

代码语言:javascript
复制
var ver = getInternetExplorerVersion();
if ( ver> -1 )
{
   if (ver = 8.0 )
   {
       var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
       xmlDocument.async = false;
       xmlDocument.loadXML(str);
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53431770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档