我正在使用下面的代码检查一个空段落,但它永远不会返回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>"
这是从i frame读取的,因此我需要删除<p></p>标记,因为上面的函数会触发框架主体中的子元素数量。
此外,这只在IE上的HTA应用程序中运行。用户库/配置是高度控制的。

最佳答案

如果确定对象是段落,则应使用innerHTML

var isEmpty = pageChildren[i].innerHTML.trim().length==0;

(注意,MDNproposes a replacement for IE8 which lacks trim)。
你也可以使用textContent但是缺点是你必须为IE做一个不同的测试。

07-24 17:11