我使用以下代码检查空段,但它永远不会返回true。为什么呢?
var isEmpty = pageChildren[i].outerHTML.toUpperCase() === "<P></P>";
var isSpace = pageChildren[i].outerHTML.toUpperCase() === "<P> </P>";
var isNbsp = pageChildren[i].outerHTML.toUpperCase() === "<P>&NBSP;</P>";
if(!isEmpty && !isSpace && !isNbsp){
//do something
}else{
//do something else
}
这是IE8调试工具告诉我在outerHTML中的复制粘贴:"<P></P>"
这是从iFrame读取的,所以我需要删除<p></p>
标签,因为上面的函数会触发框架主体中子元素的数量。
此外,它仅在IE上的HTA应用程序中运行。用户群/配置受到高度控制。
答案 0 :(得分:2)
如果您确定自己的对象是段落,则应使用innerHTML代替:
var isEmpty = pageChildren[i].innerHTML.trim().length==0;
(请注意MDN proposes a replacement for IE8 which lacks trim)。
您也可以使用textContent,但缺点是您必须对IE进行不同的测试。
答案 1 :(得分:1)
由于所有浏览器都不支持trim()
,我建议使用RegEx删除所有空格:
var isEmpty =
(pageChildren[i].innerHTML.replace(/\s/g, '').length == 0) ? true : false;
答案 2 :(得分:0)
似乎IE&lt; 9前面有一个回车符,换行到outerHTML结果,所以例如pageChildren[i].outerHTML.toUpperCase() === '\r\n<P></P>'
为空的p
元素返回true。