Is the relation between <iframe> and it's document one way?

dom, dom-traversal, iframe, javascript, jquery

Solution

The `iframe` element is in different `document` (it's an element in the main page) than the `div` element (it's an element in the iframe page).

You can get the `iframe` element like this:

`iframe.contentWindow.frameElement === iframe`

Or when inside the `iframe` script environment:

`window.frameElement`

Or using the `div`

`div.ownerDocument.defaultView.frameElement === iframe`

Updated demo

Problem

You can get the nodes of the `document` object of an `<iframe>` with the `contentDocument` property of the `HTMLIFrameElement` But I can't find a way getting the `<iframe>` back out of the node. Is the relation between the `<iframe>` and it's document is only one way? If it does, WHY? A non working DEMO: ``` var iframe = document.getElementById('iframe'); var doc = iframe.contentDocument || iframe.contentWindow.document; var div = doc.getElementsByTagName('div')[0]; console.log('Did we find the iframe? ' + ($(div).closest('iframe').length > 0));​ // Output: "Did we find the iframe? false" ```

Original source