Web.fla

主食は、html/css/php/javascript(jQuery) デザートはactionscript!WEBに関することをメモってくサイト

*

iframe 内のウィンドウから親ウィンドウの要素を操作するには!?

      2015/07/18

さて、ちょっと気になっていたiframeで読み込んだhtmlで実行したJavaScriptで親ウィンドウのDOM要素を操作さいてみよう!ってふと思ったのでそれを実験してみたのでメモしておきます。



コードとファイルの構成と流れ

今回はファイルを跨ぐので、ファイルごとのコードと説明を乗っけておきます。 

パターン1 iframe内にあるボタンをクリックしたら親ウィンドウのボックス要素の背景色を変える
パターン2 親ウィンドウのボタン要素をクリックしたら親ウィンドウのボックス要素の背景を変える

iframe内への記述になります。

iframe内から親ウィンドウの要素にアクセスできるか実験のためのボタンを設置

iframe内にjavascriptを記述して、そこから親ウィンドウの要素を取得できるかどうかのコード。

今回は、直接htmlファイルに記述しましたが外部ファイル化してもいいです。

親ウィンドウとなるhtmlファイルのコード

このファイルでは、親ウィンドウとなるのでiframeで読み込んだり、取得するためのボタンとボックスを配置

親要素にアクセスするには?

window.parent

ここが本題ですが(笑) javascriptで親のウィンドウにアクセスするにはwindowオブジェクトのparentプロパティで親ウィンドウへの参照を取得できます。

こちらは、あくまで、「自分を定義している親のウィンドウをオブジェクトとして指す時」になるので、今回の場合はiframeで読み込んだhtmlが親となる。

window.top

さて、topプロパティを載せた理由は実はwindow.topもまた親ウィンドウへ参照できるのですが、window.topの場合は「ウィンドウオブジェクトの階層における最上位のウィンドウを返します」ということです。

これは、window.parentの場合は、その直近の親(1階層上の親)を返すようですが、window.topの場合は最上級という点で少し変わってきます。

深い階層や複雑な構造になっているとよく分からなくなりますが、ブラウザ上のURLとして表示される、一番上のウィンドウを参照したい場合は有効です。

jQueryを利用した場合の注意点

jqueryを利用した場合でも親ウィンドウの要素へのアクセスは可能です。例えば、親ウィンドウのボタンにアクセスしたい時は、下記のようにするとアクセスできるようです

ただ一つ実際に検証してみたのですが、親ウィンドウとなるhtmlにもjqueryファイルがリンクされていないと動作しませんでした。

追記

iframeから親ウィンドウの操作ではなく、子ウィンドウを開いて「子ウィンドウから親ウィンドウの要素、親ウィンドウから子ウィンドウの要素を操作する」という記事を書きました。iframeではないのですが、気になった方はぜひ!

 - javascript, jquery , ,

     

Message

  関連記事

javascriptのプロトタイプを調べる

前回、javascriptのクラスについて軽く書いたが今回は、prototype …

2012年、javascriptの動向などのまとめ

ここ最近、javascriptの話題が凄まじく感じます。特にnode.jsなど目 …

html5でドラッグ&ドロップでローカルからテキストファイルをアップロード

先日、ファイルの読み込みをやりましたが、今度はローカルからファイルを読み込む方法 …

【jQuery】配列から最大値を求めて、div要素の高さを揃える

よく対象のdiv要素のCSSで「padding-bottom:1000px; m …

【jQuery】スマートフォンやPC用に画像を切り替える方法

まぁスマートフォンとPC用だと画像の切り替えに迷う。基本的に画像をスマートフォン …

【jQuery】画像のロード画面でフェードイン

画像をロードする時のロード画面ってなにげに分からないなーと思い調べてメモ。 基本 …

【jQuery】TOPへ戻るボタンでスクロールさせる!!

ブログとか縦に長いサイトだとよくスクロールしていくとフワッと「ページトップへ」と …

no image
フォームにアクセスする

いまさらながらフォームにアクセスする方法をメモ ざっくりとメモ。 ■配列でフォー …

JavaScriptで動画コンテンツを操作してみた!

前回、html5のvideoタグについて説明しました。 html5のvideoで …

【javascript】マウスホイールで減速するイージングを試してみた

マウスホイールで減速するイージングを試してみた ちょっとjavascriptとj …