Доступ к событиям? - PullRequest
       7

Доступ к событиям?

0 голосов
/ 11 сентября 2011

У меня есть вопрос о создании изображений во время выполнения, которые также являются ссылками. Итак, я собирался создать ImageButton, а затем установить для события onClick что-то вроде:

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

Что означает, что это будет выглядеть так:

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

Но потом я понял, что это не работает, потому что он ищет метод, который соответствует событию.

Итак, мой вопрос: это лучший способ добиться того, чего я хочу, и если да, то как я могу заставить его работать?

Еще одна опция, которая пришла мне в голову, - это обернуть изображение в тег, но я думаю, что так будет лучше.

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 сентября 2011

Что вам нужно, это 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 голосов
/ 11 сентября 2011

Если вы спрашиваете, как использовать серверный код, чтобы сообщить клиенту об открытии окна браузера, вы не сможете.Код на стороне сервера не может сказать клиенту сделать это.Единственное, что вы сможете сделать из кода на стороне сервера, это выполнить на стороне клиента, который делает это.И в таком случае зачем вообще использовать код на стороне сервера?

Используя, например, jQuery, вы можете прикрепить событие click следующим образом:

<!-- 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 справится с задачей, если вам не нужны возможности пост-возврата кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...