header image

Ryuzeeの他サイト

mixi Twitter Twitter

Categories

携帯対応

QRコード

RING

人気ブログランキング



新着記事

こんなことをして嵌った。

  • 開発していたのは、ローカルファイルシステムで
  • JAVAスクリプトで他のサイトをwindow.openを呼び出して
  • 呼び出したウィンドウを操作

で、これは何故か失敗します。ちょっと以下の通り試してみてください。

例えば、デスクトップにparent.htmlという名前で以下のようなファイルを作ります。

<html>
<head>
<script>
function openWin() {
    hWin = window.open("http://www.google.co.jp", "child");
    alert("aaa"); //本来読み込みを待つべきですが、とりあえずalertで代用
    hWin.document.forms[0].q.value = "aaaa";
}
</script>
</head>
<body>
<input type="button"
onClick="javascript:openWin();" value="子ウィンドウ操作"/>

</body>
</html>

これを実行すると、結果はこうなります。
JAVAスクリプトセキュリティの警告

次にファイルシステム同士で実行してみます。(googleはローカルに配置できないので、
同じフォーム要素を持ったファイルを作ってください)
呼び出し元と呼び出し先をファイルシステム同士に配置した場合、これはうまくいきます。

さらに、今度は呼び出し元を違うサーバに配置し、呼び出し先をローカルのIIS以下に配置してみます。
これはうまくいきません。

まとめると

呼び出し元 呼び出し先 項目操作
できるか
ファイルシステム ファイルシステム 成功
ファイルシステム 内部サイト(http://localhost) 失敗
ファイルシステム 外部サイト 失敗
内部サイト(http://localhost) ファイルシステム 失敗
内部サイト(http://localhost) 内部サイト(http://localhost) 成功
内部サイト(http://localhost) 外部サイト(http://192.168.1.54) 失敗
外部サイト(http://192.168.1.54) ファイルシステム 失敗
外部サイト(http://192.168.1.54) 内部サイト(http://localhost) 失敗
外部サイト(http://192.168.1.54) 外部サイト(http://192.168.1.54) 成功

結論としては、

  • Window.openはどのサイトでも開けるが、
  • 画面項目の操作については、Window.openを呼び出したページと、
    Window.openによって呼び出されたページのドメインが同一である必要がある

ということのようだ。なるほどねぇ。

関連コンテンツ

このエントリは参考になりましたか?

よろしければ5段階評価で該当する☆をクリックしてください。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

“JAVAScriptのメモ”へのコメントはありません。

コメントはありません。是非コメントしてください。

コメントする

XHTML: 以下のタグが利用可能です: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback

 


ads

Ryuzeeのお気に入り

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0