- - PR -
Webユーザーコントロールに設置したコントロールのClientID プロパティがNetscape4で機能しない?
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-03-22 10:58
※タイトルは乱暴につけました。すいません。
現在、javascriptを組み込んだWebユーザーコントロールを作成しようとしています。 サーバーサイドのPage_Loadメソッドで内部のコントロールにjavascriptを付加して出力しようと考えています。 下記のようなコードビハインドを持つWebユーザーコントロールを書き Webフォームに設置したところ,IE6やNetscape7では動作したのですが、 Netscape4では動作しませんでした。 コントロールにネストがあった場合、CliantIDプロパティを使って作成したjavascriptを Netscape4で動作させることはできないのでしょうか?? 解決策をご存知でしたら教えていただけないでしょうか。よろしくお願いします。 以下、ソースコード抜粋:
動作環境: Windows2000Pro .NetFramework 1.0/1.1 IE6/Netscape7(動作) Netscape4.78 (動作しない...) | ||||||||
|
投稿日時: 2004-03-22 11:31
詳しくはないのですが。。。 これって、クライアントサイドでは alert(ClientID.value); になりますが、この書き方が、NetScapeのJavaScriptで有効ではないと思います。 alert(document.all[ClientID].value); こんな感じだったような? 詳しいところは、"NetScape用の"JavaScriptを調べてください。 あ、あと、Name属性か、ID属性か、そういうところでも変わると思います。 | ||||||||
|
投稿日時: 2004-03-22 13:33
>件名:Webユーザーコントロールに設置したコントロールのClientID プロパティがNetscape4で機能しない?
はい。 Netscape6未満はid属性(サーバ側のClientID)を対応していないです。 name属性(サーバ側のUniqueID)を使いましょう。 alert(document.forms[0].elements["name属性"].value); あるいはthisを使うと簡単です。 alert(this.value); >コントロールにネストがあった場合、CliantIDプロパティを使って作成したjavascriptを >Netscape4で動作させることはできないのでしょうか?? ネストがない場合もClientIDを使うのは適切ではありません。 # ClientIDとUniqueIDが同じなので動きますが | ||||||||
|
投稿日時: 2004-03-22 13:43
Netscape4.*のJavaScriptには、随分ふれていないので記憶が定かではありませんが、
.Netで、どういう風に展開されているのかは分りませんが、Netscape4.*系統では、例えば、layer1の中のフォームform1にアクセスする場合に、
等と、すごく冗長な指定をしなくてはいけなかった記憶があります。 ネストした結果、レイヤーを形成してたとしたら、出力したソースを見ていちいち指定しなくては出来ないかもしれません。 面倒臭いという向きには、例えばこんなものを使ってみるとか、マクロメディアあたりで使われている findObj みたいな関数を使う方法しかないと思います。 | ||||||||
|
投稿日時: 2004-03-22 13:58
Jitaさん、todoさん、冬寂さん回答ありがとうございます。
Btn.Attributes["onclick"] = "return alert(document.forms[0].elements['" + Btn.UniqueID + "'].value);"; でIE/Netscape4とも動くようになりました。 なるほど、Netscape4でも動作させるためには、ClientID を使う方法は不可で UniqueIDを直接使うと「:」で切れてしまうため、上記の様に記述する必要があるのですね。 ちなみにこのコードは下記の様に展開されます。 <input name="MyControl1:Btn" id="MyControl1_Btn" type="button" onclick="return alert(document.forms[0].elements ['MyControl1:Btn'].value);" /> ありがとうございました。 ※コードを整形/修正しました。 [ メッセージ編集済み 編集者: 仕様書無しさん 編集日時 2004-03-22 16:21 ] |
1