新しく開くページにJavaScript配列変数を渡したい



0   名前: KEN : 2007/01/21(日) 17:29  ID:C5yJY5Up
変数を渡す場合、普通は以下のように関数の引数で送り、
表示の必要があれば、関数内でウインドウを作成しますが、、
<input type="button" onClick="sedText(aryData)">

以下のように新しいページを開き、このページのJavaScriptに変数も渡して
表示処理をしたいのですがどうすればいいでしょうか。
<input type="button" onClick="window.open('purchase.html','','')">

どのようにしてaryData変数を送ればいいか教えてください。
よろしくお願いします。m(__)m

1   名前: m035 ◆Wpzr1YKOiq : 2007/01/21(日) 17:29  [URL]  ID:NKfepdZ0
http://m035.blog61.fc2.com/blog-entry-39.html
文字列を渡すなら参考になるかと。
この場合はwindow.openの第一引数にデータを付加することになるでしょう。
もしくは
onclick="var subWin=window.open('url');subWin.sedText(anyData)"

のように子ウィンドウの関数へ直接渡す方法もあります。

2   名前: KEN : 2007/01/21(日) 17:29  ID:GIt1zof7
m035さんありがとうございます。(^O^)
>onclick="var subWin=window.open('url');subWin.sedText(anyData)"
のコードを試してみたのですがうまく送信することが出来ませんでした。
以下のような感じでテストで組んでみたのですが解釈が間違っていたでしょうか?φ(..;)
よろしくお願いします。(^^;;;


file:index.html
<HTML>
<HEAD></HEAD>
<BODY>
<form>
<input type="button" value="送信" onClick="var subWin=window.open('subWindow.html'); subWin.rcvdata('送信データ');">
</form>
</BODY>
</HTML>

file:subWindow.html
<HTML>
<HEAD>
<script language="JavaScript">
<!--
var txtData; //受信データ

function rcvdata(rcvData){
//alert(rcvData);
txtData = rcvData;
}
-->
</script>
</HEAD>
<BODY>
<script language="Javascript">
<!--
alert(txtData);
-->
</script>
</BODY>
</HTML>

3   名前: m035 ◆Wpzr1YKOiq : 2007/01/21(日) 17:29  [URL]  ID:NKfepdZ0
><script language="Javascript">
上記は古いので<script type="text/javascript">にしましょう。

また、子ウィンドウがロードされてから関数は呼び出されるので、
> <script language="Javascript">
> <!--
> alert(txtData);
> -->
> </script>
の時点ではtxtDataにデータはありません。
rcvdata()内で受信データを使った処理をはじめた方がよろしいかと。
なお、ロード時に処理(例えばdocument.write)したい場合はurlにデータを付加するか、親ウィンドウのグローバル変数にデータを入れておき、openerからデータを取得する方法をすすめます。

親:
<html>
<head>
<title>mother</title>
<script type="text/javascript">
<!--
var sendData='';
//-->
</script>
</head>
<body>
<form>
<input type="button" value="送信" onclick="sendData='送信データ';window.open('subWindow.html')">
</form>
</body>
</html>

子:
<html>
<head>
<title>child</title>
</head>
<body>
<p>受信したデータは[
<script type="text/javascript">
<!--
document.write(opener.sendData);
//-->
</script>
]です</p>
</body>
</html>

4   名前: KEN : 2007/01/21(日) 17:29  ID:wn4.aq31
早速のレスありがとうございました。

>><script language="Javascript">
>上記は古いので<script type="text/javascript">にしましょう。
手元の本が2001年発行でした。 (笑)

>また、子ウィンドウがロードされてから関数は呼び出されるので、
>・・・
コードとしての間違いではなかったんですね。(^_^;)

 ソースを実行して問題ないことを確認しました。
無事解決しました。ありがとうございました。ヽ(´▽`)/

5   名前: 匿名 : 2007/01/21(日) 17:29  ID:Rt.j/.AI
余談というか、

> > 上記は古いので<script type="text/javascript">にしましょう。
> 手元の本が2001年発行でした

古いことは古いんだが、問題の本質はそこではなく、HTML 4.0(1997 年 12 月に勧告)では、script 要素には type 属性が必須であるということ。つまり、type 属性がなければ、HTML の文法的に不正であることが問題の核心。

HTML 4.0 以前に script 要素は存在しない(3.2 で予約はされていた)。それまで慣習的に使われていた language 属性は、言語名の統一の難しさから排除された(廃止予定属性として、Transitional DTD の宣言時のみ使用できる)。

だから、2001 年の時点でも「古すぎる」。

6   名前: goup1972 : 2007/01/21(日) 17:29  ID:GHnpD9Mk sub-.G
<script type="text/javascript"><!--
google_ad_client = "pub-4829562059032390";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "image";
//2007-01-20: オーディオ, ロック, 癒し, 音楽, 70年代
google_ad_channel = "6340374819+9646487077+9505114855+5333357691+0329648832";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
上記を楽天ブログで表記するにはどのように変換?したらよいのでしょうか。素人です。詳しく教えて下さい。

7   名前: KEN : 2007/01/21(日) 17:29  ID:zCCMEu8x sub-Cl
>subWindow1.htmlの内容が違うのは何故ですか?
2つめにsubWindow1.htmlはsubWindow2.htmlの間違いでした。

subWindow1は開けますがsubWindow2は開けないのが問題です。
調べてみるとopenerで見てるのは同一ページではなく親ページからなんですね。
この親ページがない場合にどうすればいいかを考えています。

同一のJavascriptファイルを読む設定で試したのですがデータが移動できなかったようでした。
結論は出来ないということでいいでしょうか。

8   名前: KEN : 2007/01/21(日) 17:29  ID:zCCMEu8x sub-Cl
失礼しました。書き込み個所を間違えました。

一覧へ戻る