我有一个关于在运行时生成图像的问题,这也是链接。好的,我要做的是创建一个ImageButton,然后将onClick事件设置为如下所示:
window.open('http://www.themagicfinger.com/')
这意味着它看起来像:
newImage.Click += (window.open('http://www.themagicfinger.com/'));
然后我意识到这不起作用,因为它寻找一个匹配事件delagate的方法。
所以我的问题是,这是实现我想要的最佳方式,如果是,我该如何才能实现?
我头脑中的另一个选择是将图像包装在标签中,但我认为这样做更好。
由于
答案 0 :(得分: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;";
答案 1 :(得分: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
控件就能解决问题。