调用window.open()后ListBox被阻止

时间:2015-03-09 19:13:13

标签: javascript asp.net telerik telerik-ajax telerik-radlistbox

我在Page_Load()注册了以下JavaScript:

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";

其中lbReihenRadListBox

这很有效,selectedItem位于ListBox的可见区域。

在页面上,还有一个按钮:

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

现在的问题是,当点击按钮并打开新页面(在新标签页中)时,我的ListBox会被阻止。我不能滚动它等。

当我没有为OnClientLoad注册EventHandler时,一切都很好。

有人能给我一个提示,有什么不对吗? - 谢谢。

1 个答案:

答案 0 :(得分:2)

确保在每个回发中注册脚本,因为提供的按钮声明将在主页面上调用回发。如果脚本没有正确注册,您将收到脚本错误,这将解释为什么滚动到项目时出现问题以及如果不添加处理程序,为什么显示正常。 也许更容易在标记中添加脚本块并使用服务器代码块来获取列表框ID,如:

        <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;" />