他フレームのフォームをサブミットするには?

[上に] [前に] [次に]
にしえもん 1999/03/19(金) 15:49:42
フレームAとBがあって、Aにあるフォームの内容をBにあるボタンで送信するにはどのようなHTML+JavaScriptを書けばいいのですか?

ふじ 1999/03/19(金) 20:10:51
Bの方に
<input type=button onClick="parent.A.form.submit();">
Aはフレームの名前、formはフォームの名前。

コルン [E-Mail] [HomePage] 1999/03/20(土) 04:12:02
 オイラも似たような所で引っかかっています。
 ソースの概要は以下ですが、何故かエラーが出てしまいます。(ちなみに動作環境はネスケ4.5)

<html><head><title>タイトル</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
function func(){
  parent.frame2.forms[0].submit();
}
// -->
</SCRIPT></head>
<body><form name="colun">
<input type=button value="サブミット" onclick="func()">
</form></body></html>

 ちなみに、forms[0]をそのフォームの名前にする事は出来ません。
 ・・・随時変化しますので。
 これは、どういうエラーなのでしょうか?

JavaScript error: Type 'javascript:' into Location for details.

 とエラーが出て、和訳すると、

JavaScriptエラー:
'javascriptをタイプしなさい:細部のための位置に。

 の様なのですが...
 でも、

parent.frame2.forms[0].submit();

 を、他の命令・・・たとえば

document.write("成功!");

 とかにすると、ちゃんと動きます。
 試しに、forms[0]を、その時のフォーム名に変えてやってみましたが、それでもダメでした。
 ・・・つづりの間違いも、さんざん探しましたし、プログラム歴長いので、たぶん間違っていないハズなのですが...
 やはり、ネスケ特有のエラーなのかなぁ?・・・うちの端末は、IEが何故か動かないから、IEで試す事も出来ないのですが...

Tiot 1999/03/20(土) 04:21:52
直接関係はないんですが
> JavaScript error: Type 'javascript:' into Location for details.
というメッセージが出た場合は、普段URLを打ち込むところに
javascript:
と、入力してエンターで、詳しいエラーメッセージがコンソールに得られます。
詳細は、ロケーションバーに「javascript:」と入力して確認してください、ですね。

コルン 1999/03/20(土) 04:27:02
 Tiotさん、ありがとう御座います。
 詳しいエラー表示が出るのなら、デバッグもやりやすいです。
 ・・・たぶん、後は自分で解決出来ます。

コルン 1999/03/20(土) 04:38:09
 重大な事が解りました。
 ・・・submitが在る方のHTML文章が、<HTML>無しに、いきなり<HEAD>で始まっているです。
 ・・・どうしようも無いでは無いか...
 こりゃぁ、諦めるしか無いかなっ?・・・それとも、昔のブラウザを引っ張り出してくるか...?

 ・・・IEだと、動くかもっ?

ふじ 1999/03/20(土) 14:29:03
>・・・submitが在る方のHTML文章が、<HTML>無しに、いきなり<HEAD>で始まっているです。
Navigator も IEも、お構いなしに動くと思いますが・・・
#HTMLの文法的には省略可能なタグでもあるし。

ちなみに、どんなエラー(詳細なメッセージの方)がでます?>コルンさん

とこやん 1999/03/20(土) 15:56:43
このエラーを見たことが無いので、役に立つか分かりませんが、、、。

私も別フレームのフォームをどうこうするってプログラムは結構使用してます。
その際上記の関数(func)に相当するものはすべてフレームセットを指定するページ
(トップページと言うんですか?)に入れてます。
フレームは、読込む順番だの何だので、別フレームにある関数とかは知らないよ!
って言われちゃう時がありますよね。
だからフレームをまたぐ処理を行う関数は、面倒くさいのでトップに入れちゃうんです。

でもやっぱりあんまり本質的な回答ではなかったかも、、、。

コルン [E-Mail] [HomePage] 1999/03/21(日) 01:42:47
 シクシクシクシク。
 ・・・何がいけないんだぁ〜。(涙)


 >ちなみに、どんなエラー(詳細なメッセージの方)がでます?

parent.frame2.forms has no properties.

 というエラーです。
 とこやんさんの言うとおり、別フレームのフォームを認識しないのかなっ?
 一応、とこやんさんの言う様に、フレームにJavaScriptをほどこしてみましたが、これまたダメでした。
 ・・・長年プログラムをやってきて、「どこにエラーが在るか解らない」というのは沢山在りましたが...(ちゃんとすべて解決しています)
 こんな単純なハズのプログラムでエラーが発生し、原因が解らないのは、初めてです。
 そういえば、前にも、こういう事が在ったよなぁ。・・・あの時は、コンパイラ自体が壊れていた・・・というか、OSの環境変数がおかしくて、コンパイルが出来なかったというか...
 とうとうオイラも妬きがまわったか。
 ・・・小説家に転職しましょっか。(核爆)

とこやん 1999/03/21(日) 17:20:42
えぇ〜!!
やっぱ、だめっすかぁ?
ぢゃあさ、 parent.frame2.document.forms[0].submit()とかゆうふうに
「document」を入れてみてもだめ?

でもほんっとに、JavaScriptのエラーメッセージって、
涙が出ちゃうほど貧弱だよね!
no propertiesで何を知れっつーのよぉ!って思うよね。
頑張れ。コルンさん!

たこすけ 1999/03/23(火) 11:34:15
>parent.frame2.forms has no properties.
から”formsはparent.frame2のプロパティではない。”と考えて
parent.frameはwindowオブジェクト、formsはformオブジェクト、
formオブジェクトはdocumentオブジェクトのプロパティなので
現在の「windowオブジェクト.documentオブジェクトのプロパティ」の書式は間違い。
ならば「windowオブジェクト.windowオブジェクトのプロパティ」とすれば良いので
「windowオブジェクトのプロパティ=document、history、locationのいずれかのオブジェクト」から
>ぢゃあさ、 parent.frame2.document.forms[0].submit()とかゆうふうに
>「document」を入れてみてもだめ?
おそらくこれが正解。

#でも自信無し。大嘘かも。求むフォロー
#とほほのJavaScript入門を読みなおしてみようっと

たこすけ 1999/03/24(水) 10:03:00
やっぱり間違ってた。

>parent.frameはwindowオブジェクト
ではなくwindowオブジェクトのプロパティ(frameオブジェクト)でした。
しかし、formオブジェクトの上位はdocumentオブジェクトなので

>parent.frame2.document.forms[0].submit()
やっぱりこれが正解だと思う。

#なんか一人で空回りしとる・・・・
#誰かフォローしてーーー

Tmb 1999/03/24(水) 10:29:32
たこすけさんので合ってると思います。

例えばNN3では
parent.frame2.forms[0].reset()
では has no propertiesでエラー
parent.frame2.document.forms[0].reset()
でフォームのリセットが出来ました。
#単にsubmitより視認しやすかったんでresetにしましたけど。

たこすけ 1999/03/24(水) 20:29:12
Tmbさん、フォローありがとうございます。(本当にいつもいつも)

違うサイトでリファレンスをみたら
frameオブジェクトの下位にwindowオブジェクトと書いてあって
何を信じてよいのやらサッパリわからん状態でした。

>たこすけさんので合ってると思います。
「答えはわかったけど式がわからない」という感じです。
答えを出したのはとこやんさんなので、私はなにもしてませんね・・・トホホ。

#にしえもんさんやコルンさんは解決したのかなぁ?

コルン [E-Mail] [HomePage] 1999/03/27(土) 07:41:30
 どうやら、たこすけさんも、とこやんさんも、Tmbさんも、全員正解の様です。ありがとうございました。
 ・・・しかし。

access disallowed from scripts at file:/B|/Homepage/colun/dmy/menu.html to documents at another domain.

 とエラーが出てしまった。どうやら、他のサイトのフォームを、JavaScriptで弄くっては成らないとか...?
 試しに、某無料サービスに、転送して、やってみたが、やはり無理だった。同じエラーが出てしまう。

 たぶん、以前試した時は、どのエラーでも「JavaScript error: Type 'javascript:' into Location for details.」だったので、その前のエラーとの区別が付かなかったんですね。・・・きっと。
 この場合、セキュリティをかいくぐるしか無いのかなぁ?
 ・・・ん、もしかしたら、ネットスケープの設定で、どうにか成るかも知れない...やってみます。

[上に] [前に] [次に]