【问题标题】:How to check if iframe is empty/null/undefined?如何检查 iframe 是否为空/null/未定义?
【发布时间】:2010-11-18 14:43:11
【问题描述】:

这不起作用:

if(document.getElementById("iframe").innerHTML==''){

是否有一种安全的浏览器可靠方法来检查 iframe 是否为空?

谢谢

【问题讨论】:

  • “空”是什么意思?您是否试图确定是否没有加载页面或加载的页面是否为空白?
  • 没有加载页面...但是很高兴知道...

标签: javascript jquery html browser iframe


【解决方案1】:

如果您可以使用 jQuery,请检查它的 length 属性。这是跨浏览器兼容的。如果为零,则不存在。像这样的:

if(!$("#iframeid").length) {
    // iframe doesn't exist
}

编辑:

在看到你的问题后:

如果您想检查 iframe 内是否没有加载页面,并且 iframe 不是跨域,您可以检查 iframe 内是否存在 body 标签。如果存在,则加载了某些内容。

类似这样的:

if($("#iframeid").contents().find("body").length) {
    // some html page loaded in iframe
}

如果 iframe 是跨域的,您将被 same-origin policy 阻止。否则这将起作用。

【讨论】:

  • 似乎总是返回真......用其他的话不起作用......我会尝试寻找“身体”的另一种方法
  • 我使用 if(iframe.offsetHeight==0) 来查找它是否存在...我主要需要知道它什么时候不存在,因此适合我的需求并适用于主流浏览器:)
  • @alex : 跨域怎么做
【解决方案2】:

检查框架的contentDocument 属性。 IE 7 及更早版本支持contentWindow 属性,但http://www.w3schools.com/jsref/prop_frame_contentdocument.asp 有一个简单的跨浏览器示例。

一种不太可靠的方法,但可能是您想要的...检查src 属性。

您可以在http://www.w3schools.com/jsref/dom_obj_frame.asp阅读有关其他框架属性的信息

【讨论】:

    【解决方案3】:

    iFrame 是否为空的检查可以使用如下定义的 Jquery 来实现:

    <script type="text/javascript">
        if ($("#iframeId").contents().find("body").is(':empty')) {
            // Apply ur logic
        }
    </script>
    

    【讨论】:

    • 您的答案可以通过添加有关代码的作用以及它如何帮助 OP 的更多信息来改进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多