- PR -

smartnavigation="true"の際のJavaScriptの動作について

1
投稿者投稿内容
なみへー
会議室デビュー日: 2003/11/13
投稿数: 10
投稿日時: 2003-12-04 15:46
はじめまして。

ASP.NET(VB)でWEBアプリケーションを作成しております。

ある画面で、画面の再描画が発生する為、smartnavigation="true"
に設定しました。
すると、smartnavigation="true"に設定する前までは問題なく動いていた
別画面を起動するJavascriptがエラーになるようになりました。

ASPX上にそのまま書いているJavascriptは問題なく動作するのですが、DLLより
Response.WriteでJavascriptを動作させた場合にエラーとなってしまいます。

お心当たりのある方がいらっしゃいましたら、ご教授願えませんでしょうか。
宜しくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-04 16:49
 同じ現象がでて、自分でコードを書いて逃げた口ですが、、、、
もしすぐにできるなら試していただけないでしょうか。

Response.Write(script)としているところを、
RegisterStartupScript("NewWindow", script)

とすると、どうなりますか?

Response.Writeメソッドを使うと、ソースを見ればわかりますが、HTMLタグの外にスクリプトを書きます。ここに原因があるのではないかと、ふと思いましたので。
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2003-12-04 16:56
RegisterStartupScript メソッド、RegisterClientScriptBlock メソッド
あたりを調べ、試してみてください。

こちらでは、これで直りました。

原因はJittaさんの言われているとおりだと思います。(深くは追っていないですが)

#ちなみにRegister〜Script形で登録したスクリプトがソースの表示で出ないんですよねぇ。
#Jittaさんなど皆さんのところでは出ますか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-04 17:05
引用:

daiさんの書き込み (2003-12-04 16:56) より:

#ちなみにRegister〜Script形で登録したスクリプトがソースの表示で出ないんですよねぇ。
#Jittaさんなど皆さんのところでは出ますか?


でますよ。ただ、なぜか、Startupは/formの直前くらい(とにかく後ろの方)、CrientScriptBlockはform要素の直前くらいにあります。む?Startupだから、オブジェクトがそろう後ろにあるのか。

それより、Register*Script*なんだから、script要素で囲ってよ!!ってかんじ。
なみへー
会議室デビュー日: 2003/11/13
投稿数: 10
投稿日時: 2003-12-04 17:38
返信ありがとうございます。なみへーです。

Jittaさんの
引用:

Jittaさんの書き込み (2003-12-04 16:49) より:
Response.Write(script)としているところを、
RegisterStartupScript("NewWindow", script)

とすると、どうなりますか?

Response.Writeメソッドを使うと、ソースを見ればわかりますが、HTMLタグの外にスクリプトを書きます。ここに原因があるのではないかと、ふと思いましたので。


でJavascriptが正常に動作するようになりました!
ありがとうございます!

RegisterStartupScriptは、今の今まで知りませんでした・・・(反省です)
ヘルプを見たのですが、Response.WriteよりもRegisterStartupScriptのほうが
使い勝手が良さそうな気がしましたが、実際どうなんでしょう?

#私も、RegisterStartupScriptで出力した場合、ソースの表示では、内容が表示
 されませんでした・・・

[ メッセージ編集済み 編集者: なみへー 編集日時 2003-12-04 17:49 ]
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2003-12-04 17:59
なみへーさん、良かったですね。^^

引用:

Jittaさんの書き込み (2003-12-04 17:05) より:
でますよ。ただ、なぜか、Startupは/formの直前くらい(とにかく後ろの方)、CrientScriptBlockはform要素の直前くらいにあります。む?Startupだから、オブジェクトがそろう後ろにあるのか。


出るんですね。安心しました。
設定の問題ですかねぇ。ここでは出ないです...。
ポストバック後のページではなく、ポストバック前のページが出ている!?
ちょっと時間があるときに調べてみます。

別話ごめんなさい。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-05 08:18
引用:

なみへーさんの書き込み (2003-12-04 17:38) より:

#私も、RegisterStartupScriptで出力した場合、ソースの表示では、内容が表示
 されませんでした・・・


え〜?!おかしいなぁ?エラーになっているから?そういえば、エラーにならないときは確認していなかった。その辺のソースさわるときに確認します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-05 16:08
> エラーにならないときは確認していなかった。

 確認しました。少なくとも、StartupScriptはソースを見るで見られます。ただ、おそらく1行だけになるので、見つけにくいです。Validateコントロールがあると、その関数の直前、Form要素の終了直前に挿入されています。
1

スキルアップ/キャリアアップ(JOB@IT)