我正在使用下面的代码检查一个空段落,但它永远不会返回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做一个不同的测试。