- - PR -
他ページの関数を呼ぶ
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-05-11 18:41
お世話になります。C#.NETでWeb開発しております。
いろいろ探したのですが、わからず申し訳ありませんが、ここでJavaScriptについて質問させてください。 上下に分かれたFrame(top、buttom)があり、topに配置されたHTMLボタンクリックで buttomの関数を実行したいのですがどのようにしたらよいでしょうか? 本で調べると、サブウィンドウ←→親ウィンドウの関数呼び出しは記述してあったのですが、フレーム間は乗っていませんでした。可能でしょうか? | ||||
|
投稿日時: 2004-05-11 21:42
可能です。
「サブウィンドウ←→親ウィンドウの関数呼び出し」と同様に、 要はその関数が宣言されているwindowオブジェクトを取得できればよいはずです。 # 以下、追記。 ちょっと不親切でしたね。 同一ウィンドウ上の別フレームは、 window.parent.frames["xxx"](自分フレームの、親の、子フレーム) と、参照するのが一般的だと思います。 フレームの分割次第では、 window.top.frames["xxx"](自分フレームの、トップの、子フレーム) と、なるかも知れませんが。 # 蛇足ですが、 # window.parent.frames.xxxとかwindow.parent.xxxとかwindow.parent["xxx"] # でも取得できます。 [ メッセージ編集済み 編集者: He 編集日時 2004-05-11 22:01 ] | ||||
|
投稿日時: 2004-05-12 09:05
ありがとうございます。
window.parent.frames["xxx"] で取得できました。 追加で質問なのですが、 今度はサーバ側で別のページのボタンなどのプロパティを変更するにはどのようにしたらよろしいでしょうか? とりあえず、 ページ名 main_page = new ページ名 で取得して、 main_page.Button1 としてもウォッチでは未定義の値となっています。 あとなにを設定すれば自由に設定できるのでしょうか? 重ねがさねお願いいたします。 | ||||
|
投稿日時: 2004-05-12 09:53
クライアントに、そのページをリクエストしてもらいます。 まず、ASP.NETの、本質的な動作を知ってください。 参考:@IT連載 プログラミングASP.NET ページオブジェクトは、動作している瞬間だけ、生きています。もし、あるページのサーバサイドコードで別のページをnewしても、そのオブジェクトはクライアントにあるオブジェクトとまったく関係がありません。クライアントが表示している「ページ」は、すでにサーバ側では破棄されています。 Windowsアプリケーションと同じような作り方はできません。似て非なる技術が必要です。 | ||||
|
投稿日時: 2004-05-12 12:03
ありがとうございます。
しばらく触らないうちにさっぱり忘れていました。 Javascriptのhiddenをつかって、実装できました。 呼び出し元ページにて、 main = window.parent.frames["main"]; if(document.Form1.xxx_hidden.value == "true") { main.page_load(true); } else { main.page_load(false); } 変更されるページにて、 function page_load(bool) { if(bool == "true") { button1.disabled == false; } else { button1.disabled == true; } } として、ロード時に実行しました。 ありがとうございました。 この関数の呼び出しタイミングなど結構面倒ですね。。。 |
1