frame内のformをsubmitするとjavascrip

[新着] Webテンプレートを仮オープンしました



0   名前: 山無地 : 2006/06/03(土) 02:14  ID:hmIfJ4ks
一日調べまわったのですが、ほとほと困り果てまして、質問させていただきます。
親フレームから子フレーム(iframe)内のtextareaの内容を以下のように

 onclick=alert(document.getElementById('koframe').contentWindow.document.all('kotxt').innerText);

javascriptで取得しているのですが、子フレーム内のformを別ページにsubmitすると動かなくなります。
別ページにも<textarea id=kotxt>とあるのですが、そんな問題じゃないんでしょうか。
IE6で動けば問題ないのですが、よろしければ解決方法をご教授いただけませんでしょうか。
よろしくお願いします。

1   名前: MOA : 2006/06/03(土) 02:14  ID:Ip1N2Vuc
ためしにやってみたけど、普通にできましたよ。
子フレームが、親フレームと別ドメインにある場合はうまくいかないようなことをどっかで聞いた気がするけど。
そうでなければ別に原因があるのでは?

一応ソース貼っときますね。

■oyaframe.html
<html lang="ja">
<body>
<iframe id="koframe" src="koflame.html"></iframe>
<button onClick="alert(document.getElementById('koframe').contentWindow.document.all('kotxt').innerText);">push</button>
</body>
</html>

■koframe.html
<html lang="ja">
<body>
<form action="koflame2.html">
 <textarea id="kotxt"></textarea>
 <input type="submit">
</form>
</body>
</html>

■koframe2.html
<html lang="ja">
<body>
<form action="koflame.html">
 <textarea id="kotxt"></textarea>
 <input type="submit">
</form>
</body>
</html>


2   名前: 山無地 : 2006/06/03(土) 02:14  ID:hmIfJ4ks
MOAさん、ありがとうございます。
書いてなかったですね、すいません。

>> 子フレームが、親フレームと別ドメインにある場合はうまくいかないようなことをどっかで聞いた気がするけど。

まさしくこれなんです、別ドメイン。
これが原因なんでしょうか?
今念のためMOAさんのソースで確認しましたが、同じドメインであれば動きました。
別ドメインにすると動きませんね。

別ドメイン、無理なんでしょうか。
どなたかご存知の方いらっしゃいましたらご教授ください。
自分でももう少し調べてみます。

3   名前: 山無地 : 2006/06/03(土) 02:14  ID:hmIfJ4ks
すみません、お騒がせしました。
子フレームが、親フレームと別ドメインにある場合セキュリティーの問題で出来ないようです。

http://q.hatena.ne.jp/1147429015

urlは参考までに。

4   名前: Pid ◆byEkK9OALr : 2006/06/03(土) 02:14
どうしても必要なら,いったん CGI などサーバ側を経由させれば取得できます。

あと,getElementById と all を使い分けているのは理由がおありですか?そもそも textarea 要素に対して非標準な innerText を使う理由はないと思いますが。

// 現時点で標準的な方法
document.getElementById ('koframe').contentDocument.getElementById ('kotxt').value

// 最も互換性が高いと思われる方法
window.frames['koframe'].document.getElementById ('kotxt').value


一覧へ戻る