如何判断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。
答案 0 :(得分:1)
您可以使用它来解析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);
}
}