2011-09-11 6 views
0

私は実行時にリンクでもある画像を生成することに関して質問があります。オクラホマので、私は何をするつもりだったことのImageButtonを作成し、その後のようなものにonClickイベントを設定します。それは次のようになり意味イベントへのアクセス?

window.open('http://www.themagicfinger.com/') 

newImage.Click += (window.open('http://www.themagicfinger.com/')); 

しかし、その後、私は実現しましたこれは、それがうまくいきません、それはイベントdelagateに一致するメソッドを探します。

私の質問は、これが私が欲しいものを達成するための最良の方法ですか、もしそうなら、どうすればいいのですか?

私の頭の中に入った別のオプションは、イメージをタグで囲むことですが、私はこの方法がより良いと思います。

おかげ

+0

新しいウィンドウを開いているのでれますクライアント側のイベント、なぜこれをサーバー側のコードで実行しようとしていますか? JavaScriptでやってみませんか? – David

+0

あなたはできませんjavascriptで、私は質問で説明!イベントonClickは、オブジェクトとeventArgsを持つメソッドを探します。あなたはそれをjavascriptでフィードできません。 – TheGateKeeper

+0

JavaScriptのDOM要素であっても、クリックに応答してブラウザウィンドウを開くことができることを保証します。実際には、クライアント側のスクリプトを使用するのは、新しいブラウザウィンドウを開くためのほんの一例です。サーバーサイドのコードには、クライアントにそのことを伝える手段はありません。 – David

答えて

2

OnClientClickです:

<asp:ImageButton id="ImageButton1" runat="server" OnClientClick="window.open('http://www.themagicfinger.com/'); return false;" ImageUrl="MyButton.png" /> 

このプロパティは、文字列ではなく、イベントで、あなたはまた、背後にあるコードの中からそれを割り当てることができます。

ImageButton1.OnClientClick = "window.open('http://www.themagicfinger.com/'); return false;"; 
+0

ああありがとう!私はこのことを知らなかった。それらの違いは何ですか? 1つはクライアント側で動作し、次にポストバックが発生しますか? – TheGateKeeper

+0

問題はありませんが、それは些細なことではありません。初めにそれについて学ぶのにしばらく時間がかかりました。属性 'OnClick'は複雑で複雑なJSコードに変換され、フォーム提出を引き起こします。したがって、Post On .. OnClientClickはそのままの状態でレンダリングされた「単純な」文字列属性です。 –

0

ブラウザウィンドウを開くために、クライアントに伝えるために、サーバー側のコードを使用する方法を求めている場合は、することはできません。サーバー側コードには、クライアントにそのことを伝える手段がありません。あなたがサーバー側のコードから行うことができるのは、これを行うクライアントサイドを発行することだけです。その場合、なぜサーバー側のコードを使用するのですか?例えばjQueryのを使用して

、あなたは次のようにクリックイベントを添付することができます。

<!-- page header (including loading jQuery), other stuff that's before the image, etc. --> 
<img src="/path/to/image" alt="some text" id="imgOpenWindow" /> 
<!-- the rest of the page --> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#imgOpenWindow').click(function(){ 
     window.open('http://www.themagicfinger.com/'); 
    }); 
    }); 
</script> 

何らかの理由であなたが必要このためImageButtonコントロールを使用する場合、それは次のようになります。

<!-- page header (including loading jQuery), other stuff that's before the image, etc. --> 
<asp:ImageButton run="server" id="imgOpenWindow" ImageUrl="/path/to/image" AlternateText="some text" /> 
<!-- the rest of the page --> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#<%= imgOpenWindow.ClientID %>').click(function(){ 
     window.open('http://www.themagicfinger.com/'); 
    }); 
    }); 
</script> 

しかし、私はポストバックでどのような振る舞いがあるのか​​分かりません。 JavaScriptハンドラをオーバーライドして(ハンドラが実行される前にポストバックする)、ウィンドウが開いた後にポストバックするなど、その動作は未定義で信頼性が低いと考えます。ただし、ボタンのポストバック機能が必要ない場合は、Imageコントロールがトリックを行います。あなたが必要なもの

関連する問題