ListBox блокируется после вызова window.open()

Я регистрирую следующий JavaScript в Page_Load():

var scriptReihe = "<script type=\"text/javascript\">function OnClientLoadHandlerReihe(sender) {"
                     + "var listbox = $find(\"" + lbReihen.ClientID + "\");"
                     + "var item = listbox.get_selectedItem();"
                     + "item.ensureVisible();"
                     + "}"
                     + "</script>";

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "OnClientLoadHandlerReihe", scriptReihe);
lbReihen.OnClientLoad = "OnClientLoadHandlerReihe";

где lbReihen это RadListBox

Это работает отлично, и selectedItem находится в видимой области ListBox.

На странице также есть кнопка:

<asp:Button ID="myBtn" runat="server" Text="Call google" OnClientClick="window.open('http://www.google.ch', '_blank');" />

Проблема в том, что теперь, когда кнопка будет нажата, и откроется новая страница (в новой вкладке), мой ListBox заблокирован после. Я не могу прокрутить его и т. Д.

Когда я не регистрирую EventHandler для OnClientLoadвсе работает отлично.

Может кто-нибудь подсказать мне, что тут не так? - Спасибо.

1 ответ

Решение

Убедитесь, что вы регистрируете скрипт для каждой обратной передачи, потому что предоставленное объявление кнопки вызовет обратную передачу на вашей главной странице. Если скрипт не будет зарегистрирован должным образом, вы получите ошибки скрипта, которые объяснят, почему у вас есть проблемы с прокруткой к элементу и почему все выглядит нормально, если вы не добавляете обработчик. Возможно, проще просто добавить блок сценария в разметку и использовать блоки кода сервера для получения идентификатора списка, например:

        <telerik:RadListBox ID="lbReihen" runat="server"></telerik:RadListBox>
        <telerik:RadCodeBlock runat="server" ID="RadCodeBlock1">
            <script type="text/javascript">
                function OnClientLoadHandlerReihe(sender) {
                    var listbox = $find("<%=lbReihen.ClientID%>");
                    var item = listbox.get_selectedItem();
                    item.ensureVisible();
                }
            </script>
        </telerik:RadCodeBlock>

Также рассмотрите возможность предотвращения обратной передачи кнопки, возвращая false:

<asp:Button ID="myBtn" runat="server" Text="Call google" OnClientClick="window.open('http://www.google.ch', '_blank'); return false;" />
Другие вопросы по тегам