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" 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/

相关文章:

javascript - 在弹出窗口中显示特定数据

javascript - 使用 jQuery 求解线性方程

javascript - 不同风格的字体图标

javascript - 从 javascript 函数返回数据的更好方法是什么

javascript - 使用 window.open() 打开文件时传递 url 参数(从 ColdFusion 页面)

javascript - 将 .CSV 转换为 HTML 表

jquery - XML解析错误: not well-formed in FireFox but good in Chrome

javascript - 客户端 + 服务器项目的 Yeoman 设置

javascript - Google Maps API,添加标记是否会影响使用限制?

javascript - Firefox 5 中的 dispatchEvent