我发现我可以做到以下几点:
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 会被另一个框架集替换。
最佳答案
如果你想知道一个元素是否存在,你必须检查长度属性,参见 jQuery FAQ :
if ($('#myFrame').length) {
alert('#myFrame exists');
}
在你的情况下,我认为你想要:
if ($('frame[name=header]', parent).length) {
alert('frame exists');
}
为什么要检查长度属性?
因为如果您向 jQuery 传递一个不匹配任何内容的选择器,则返回的结果是一个 jQuery 对象,而不是 if statement 中的虚假值(null、undefined、0 或 false)。条件被评估为 bool 值,并且非“假”值始终被评估为真:
if ($('#nonExisting')) {
alert('always true');
}
// because
!!$('#nonExisting') == true; // and
!!'hello' == true;
!!0 == false;
我使用 !!
作为将任何表达式转换为其等效 bool 值的简单方法的示例,if 语句在幕后做了什么......
编辑:查看您的框架集标记,并假设您想检查主页中是否存在页眉框架,您可以通过以下方式轻松完成:
if (parent.header !== undefined) {
// frame exists
}
或者简单地说:
if (parent.header) {
// frame exists
}
检查这个例子:
关于javascript - 使用 jQuery 检查框架是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1330376/