1. iframe の window オブジェクトを取得します
クロスドメインアクセス制限があります。
chrome: iframeElement.contentWindow
firefox: iframeElement.contentWindow
ie6: iframeElement.contentWindow
記事 Iframes、onload、document.domain には、「iframe 要素オブジェクトには、iframe の document オブジェクトを含む contentDocument というプロパティがあるため、parentWindow プロパティを使用してウィンドウ オブジェクトを取得できる」と記載されています。これは、一部のブラウザではこのことを意味します。 iframe のウィンドウ オブジェクトは、iframeElement.contentDocument.parentWindow を通じて取得できます。ただし、テスト後、Firefox と chrome の element.contentDocument オブジェクトにはparentWindow 属性がありません。
(javascript)
function getIframeWindow( element){
return element.contentWindow;
// return element.contentDocument.parentWindow >}
2. iframe のドキュメントオブジェクトの取得
クロスドメインアクセス制限があります。
chrome: iframeElement.contentDocument
firefox: iframeElement.contentDocument
ie: element.contentWindow.document
注: ie には iframeElement.contentDocument プロパティがありません。
(javascript)
var getIframeDocument = function(element ) {
return element.contentDocument ||
;
3. iframe
内の親ページから取得されたウィンドウ オブジェクトには、クロスドメイン アクセス制限があります。
親ページ: window.parent
トップページ: window.top
すべてのブラウザに適用されます
4. 親ページの iframe の HTML タグを取得します。
クロスドメインのアクセス制限があります。
window.frameElement (タイプ: HTMLElement)、すべてのブラウザで動作します
5. iframe onload イベント
IE 以外のすべてのブラウザは onload イベントを提供します。たとえば、次のコードには IE ではポップアップ ボックスが表示されません。
(javascript)
var ifr = document.createElement ('iframe');
ifr.src = 'http://www.jb51.net/index.php';
ifr.onload = function() {
ロードされました');
};
document.body.appendChild(ifr);
ただし、IE には onload イベントが用意されているようで、次の 2 つのメソッドが onload
をトリガーします。
方法 1:
方法 2:
//createElement にそのようなパラメーターを渡すことをサポートしているのは IE だけです var ifr = document.createElement('
');
document.body.appendChild(ifr);
親ページに iframe 要素が含まれているため、クロスはありません。上記の方法ではドメインの問題が発生します。
実際には、IE は onload イベントを提供しますが、attachEvent を使用してバインドする必要があります。
var ifr = document.createElement('iframe ');
ifr.src = 'http://b.jb51.net/b.php';
if (ifr.attachEvent) {
ifr.attachEvent('onload', function() {alert( 'loaded') });
} else {
ifr.onload = function() {alert('loaded') }; ifr);
6. フレーム
window.frames はページ内のフレーム (iframe、frame など) を取得できます。これは HTMLElement ではなく window オブジェクトであることに注意してください。
var ifr1 = document.getElementById('ifr1 ');
var ifr1win = window.frames[0];
ifr1win.frameElement === ifr1; // false