繁体   English   中英

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

[英]How do I tell if an html string contains content and not just tags

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

我需要能够在浏览器中的javascript中执行此操作,并且它需要支持IE8。 我得出的结论是,解析html是实现此目的的最佳方法。 如果还有其他可行的方法,我也会对此感兴趣。 正则表达式是不可接受的。

至关重要的是,我需要它在检查时不运行javascript。 诸如<script>alert(1)</script><img src=x onerror=alert(1)/>不应发出警报。 这是IE8的主要停止点。 IE9具有document.implementation.createHTMLDocument,IE 10和更高版本具有适用于html的DOMParser,它们都不能运行JS,但是我找不到IE8的解决方案。

我认为最好的发现是基于javascript的html解析器,但是我看过的所有内容都是针对Node或不支持IE8。

您可以使用它来解析IE8中的html字符串:

var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
xmlDocument.async = false;
xmlDocument.loadXML(str);

要检测IE版本,请使用以下功能:

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;
}

和用法:

var ver = getInternetExplorerVersion();
if ( ver> -1 )
{
   if (ver = 8.0 )
   {
       var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
       xmlDocument.async = false;
       xmlDocument.loadXML(str);
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM