【问题标题】:Get the document object for an Iframe?获取 iframe 的文档对象?
【发布时间】:2013-04-17 20:41:31
【问题描述】:

如何获取 Ifarme 的文档对象?

我试过这个:

$(document,"#IFRM_Quest")[0] //[object Document]

它有效。

但我也试过了:

$("#IFRM_Quest").contents()[0] 也会产生文档。 //[object Document]

为什么会这样

$("#IFRM_Quest").contents()[0]===$(document,"#IFRM_Quest")[0]

返回假?

这应该是同一个对象...

http://i.stack.imgur.com/NHmlL.png

【问题讨论】:

    标签: jquery


    【解决方案1】:

    $(document,"#IFRM_Quest")[0] 不选择 iframe 的文档对象,它只是选择当前的,嗯,文档的文档对象。

    document 是直接引用文档对象的变量,而不是选择器。您的函数调用相当于:

    $(document)[0]
    

    因为每当您将 DOM 元素传递给 jQuery,the context is ignored:

    // HANDLE: $(DOMElement)
    } else if ( selector.nodeType ) {
        this.context = this[0] = selector;
        this.length = 1;
        return this;
    }
    

    这实际上也显示在函数签名的文档中:

    jQuery( selector [, context ] ) <- 可选上下文
    jQuery( element ) <- 无上下文

    【讨论】:

    • 但这不是上下文的语法吗? $(document,"#IFRM_Quest")??
    • @RoyiNamir:仅当您将 selector 作为第一个参数而不是 DOM 元素传递时。如果你已经有一个 DOM 元素的引用,jQuery 会(也不能)搜索那个元素。
    • 所以这个$("#IFRM_Quest").contents()[0] 会给我正确的文档对象....正确吗?
    • 是的,虽然我个人会做$("#IFRM_Quest").get(0).contentDocument,因为它更明确。
    • 是的,但是你会遇到交叉浏览问题:stackoverflow.com/a/3151793/859154 (contentDocument vs contentWindow)
    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2017-06-06
    • 2014-02-23
    相关资源
    最近更新 更多