Javascript 使用jQuery检查框架是否存在

Javascript 使用jQuery检查框架是否存在,javascript,jquery,Javascript,Jquery,我发现我可以做到以下几点: if($('#notice', parent.frames['header'].document).length>0) { alert("It is here!"); } 检查另一帧中的项目。 有没有办法找出这个框架的存在?具体来说,我想看看是否有parent.frames['header'].document 有可靠的方法可以做到这一点吗 更新: 以下是我的框架集代码: <frameset rows="104,*,22" frameborder="NO

我发现我可以做到以下几点:

if($('#notice', parent.frames['header'].document).length>0) { alert("It is here!"); }
检查另一帧中的项目。
有没有办法找出这个框架的存在?具体来说,我想看看是否有parent.frames['header'].document

有可靠的方法可以做到这一点吗

更新: 以下是我的框架集代码:

<frameset rows="104,*,22" frameborder="NO" border="0" framespacing="0">
    <frame src="header.php" id="header" name="header" scrolling="no" title="Header and Menu" noresize>
    <frame src="main.php" title="Main content" name="main">
    <frame src="footer.php" name="footer" title="Footer" scrolling="NO" noresize>
</frameset>

我试图确保我可以访问“header”中的div。 缺点是,在某些情况下,main会被另一个框架集替换。

检查选择器:

if ($("#myFrame").length) alert("It exists!");

如果要知道元素是否存在,必须检查length属性,请参见:

在你的情况下,我认为你想:

if ($('frame[name=header]', parent).length) {
  alert('frame exists');
}
为什么要检查长度属性

因为如果向jQuery传递的选择器与任何内容都不匹配,则返回的结果是一个jQuery对象,不是falsy值(null、未定义、0或false),在某种情况下,条件求值为bool,非“falsy”值求值始终为true:

if ($('#nonExisting')) {
  alert('always true');
}

// because 
!!$('#nonExisting') == true;  // and
!!'hello' == true;
!!0 == false;
我用了
作为将任何表达式转换为其布尔等价表达式的简单方法的示例,if语句在幕后所做的

编辑:查看框架集标记,并假设要检查主页面是否存在标题框架,可以通过以下方式轻松完成:

 if (parent.header !== undefined) {
   // frame exists
 }
或者简单地说:

 if (parent.header) {
   // frame exists
 }
检查此示例:


他这样做是为了框架内的一个元素,而不是框架本身。你到底为什么要因为这个投票否决我?这完全不相关。他们投票赞成,因为我的例子有效。当选择器查找帧时,检查选择器的长度是一个有效选项。@Josh,我正在检查$(“#myFrame”)的长度是否为零。这是为了框架本身。OP正在检查$(“#myFrame”)内元素的长度,这是完全不同的。我编辑后提供了一个更简单的示例,这是完全可以接受的vs.
$(“#注意,$(“#我的框架”)。长度
与Josh一样,具有向上投票:向下投票的比率,他更适合在博客或论坛上大摇大摆,而不是如此势利。我尝试了你的第二个例子,如果($('frame[name=header]',parent).length){这似乎对我不起作用。有什么建议吗?
 if (parent.header) {
   // frame exists
 }