クロスドメインで子ウィンドウから親ウィンドウを更新する
やりたかったのは、サブドメインのURLが表示された子ウィンドウから親ウィンドウのlocation.hrefを変更すること。
だがIEだと、新規ウィンドウが開いてその内容が表示されてしまう。
どうもsame origin policyで子ウィンドウと言えどもクロスドメインでは親ウィンドウへはアクセスが出来ないらしい。
document.domainを親ウィンドウと子ウィンドウで揃えてやれば、解決することが分かった。
使い方
- リンクを押して子ウィンドウを開く
- 親ウィンドウと子ウィンドウの両方で「change document.domain」ボタンを押下
- 子ウィンドウで「change window.opener.location.href」ボタンを押下
上記サンプルサイトでは、親ウィンドウと子ウィンドウの両方で「change document.domain」ボタンを押下後に、子ウィンドウで「change window.opener.location.href」ボタンを押下すると、親ウィンドウの内容を更新することが出来る。
「change document.domain」ボタンを押すことにより、そのウィンドウのdocument.domainが「eiryu.com」になり、親ウィンドウと子ウィンドウの間でやりとりが出来るようになる。