如何判断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。
发布于 2018-11-22 21:14:16
您可以使用下面的代码来解析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);
}
}https://stackoverflow.com/questions/53431770
复制相似问题