異なるドメインのフレームページにデータを渡す


動作ブラウザ 【 IE:3.0  NN:2.0
Internet Explorer Netscape Navigator DreamPassport iCab
3.0x 4.0x 4.5 5.0x 5.5 2.0x 3.0x 4.0x 4.x 6.0 2 3 2.x
Windows - - -
Macintosh - - -
UNIX - - - - - - - -
Dreamcast - - - - - - - - - - -

ポイント ●送信側 jpURL = "http://www.shiojiri.ne.jp/~openspc/receive/receive.html"; str = document.myFORM.data.value; location.href = jpURL+"?"+str; ●受信側 str = location.search; str = str.substring(1,str.length); ●出力側 document.write(parent.str);
説  明 異なるドメイン(IP)、ページにJavaScriptのみでデータを渡すにはlocation.hrefに?を付加し以後に送信したい文字を付け加えます。受け側ではlocation.searchにより?以後の文字を簡単に取り出すことができます。(?の文字も含まれます) 日本語の文字の受け渡しは文字コードの関係上、うまくいかない場合があります。 フレーム分割されている場合は一度フレームを分割指定するHTMLファイルでデータを受け取ります。この時にグローバル変数にデータを格納します。サンプルでは変数strに格納しています。表示されるフレーム側からは「parent.変数名」としてフレーム分割ページで読み込んだ変数を参照できます。サンプルではparent.strとしてデータを読み込むことができます。ただし、異なるドメイン上にページがある場合はセキュリティの都合上受け渡せない(参照)できない場合があります。
サンプル <html> <head> <title>異なるドメインのフレームページにデータを渡す</title> <script Language="JavaScript"><!-- function send() { jpURL = "http://www.shiojiri.ne.jp/~openspc/receive/receive.html"; str = document.myFORM.data.value; location.href = jpURL+"?"+str; } // --></script> </head> <body> <form name="myFORM"> 送信データ:<input type="text" name="data"><br> <input type="button" onClick="send()" value="送信する"><br> </form> </body> </html>
補足説明 受け側のスクリプトは以下の通りです。

●フレーム設定メインHTML部分 <HTML> <HEAD> <TITLE></TITLE> </HEAD> <SCRIPT Language="JavaScript"> <!-- str = location.search; str = str.substring(1,str.length); // --> </SCRIPT> <frameset rows="50%,*"> <frame src="code_left.html"> <frame src="code_right.html"> </frameset> </HTML> ●フレームデータ書き出し部分 <html> <head> <title></title> </head> <body> 渡されたデータ:<b> <script language="JavaScript"><!-- document.write(parent.str); // --></script> </b> </body> </html>

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA