Javascript 使用asp.net按钮控件滚动窗口时出现问题
在web应用程序中,我尝试通过使用javascript将y轴高度增加到500来垂直滚动窗口,该javascript附加到id为Button1的asp.net按钮控件的OnClientClick事件 我使用的脚本是Javascript 使用asp.net按钮控件滚动窗口时出现问题,javascript,asp.net,Javascript,Asp.net,在web应用程序中,我尝试通过使用javascript将y轴高度增加到500来垂直滚动窗口,该javascript附加到id为Button1的asp.net按钮控件的OnClientClick事件 我使用的脚本是 <script language="JavaScript"> function scrollToWindow() { window.scrollTo(0,500); } </script> 函数scrollToWindow() { 窗口。滚动到(05
<script language="JavaScript">
function scrollToWindow()
{
window.scrollTo(0,500);
}
</script>
函数scrollToWindow()
{
窗口。滚动到(0500);
}
按钮代码如下所示
<asp:Button ID="Button1" runat="server"
Text="Scroll to bottom" OnClientClick="scrollToWindow()" />
如果我运行此页面并单击该按钮,则页面滚动无法正常工作。当我将警报放入脚本并调试时,我发现页面实际上正在滚动到0500,但由于某些原因,它的呈现再次回到了正常位置。有人能帮我解决这个问题并告诉我原因吗???由于您在页面上放置了一个按钮,所以整个页面可能会发回。实质上,点击它将“刷新”页面,这将导致您看到的结果。按照您的意愿运行window.scrollTo()更适合于链接或其他内容。您可以在asp:HyperLink中运行JavaScript,或者只使用标准的HTML锚定标记来完成任务。单击按钮(回发)后,您的页面将重新加载默认设置。OnClientClick不会阻止它,除非您在javascript代码中阻止回发(
返回false;
,最后)。它重置的原因是asp按钮在页面上执行提交操作。因此,它首先执行javascript onclick,然后回发到服务器,这会导致页面刷新
<asp:ScriptManager runat="server" ID="ScriptManager1" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="Button1" Text="Button"
onclick="Button1_Click" OnClientClick="alert('hello');" />
</ContentTemplate>
</asp:UpdatePanel>
解决方案1:
在aspx文件顶部的页面指令中,可以添加一个设置以保持滚动位置:
<%@ Page MaintainScrollPositionOnPostback="True" %>
在这种情况下,您可以像最初一样定义按钮:
<asp:Button ID="Button1" runat="server"
Text="Scroll to bottom" OnClientClick="scrollToWindow()" />
注意:此设置在Safari和Google Chrome中不起作用,但在其他主要浏览器中起作用(IE5+,Firefox,Opera)
解决方案2:
要使其与Safari和Google Chrome配合使用,您可以改为使用AJAX来防止整页刷新
<asp:ScriptManager runat="server" ID="ScriptManager1" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="Button1" Text="Button"
onclick="Button1_Click" OnClientClick="alert('hello');" />
</ContentTemplate>
</asp:UpdatePanel>
只需确保所有因按钮单击而更改的GUI都需要是由按钮单击触发的相同的
的一部分。我还需要一些服务器端代码来执行此操作。所以我可以使用asp.net按钮控件。即使发生回发,是否有办法保持滚动位置?谢谢您的代码建议。它似乎工作得很好。谢谢你的想法。我试过使用return-false;在javascript的末尾,但输出仍然相同。。即使发生回发,如何保持滚动位置?您可以将滚动位置存储在ViewState中,并在页面加载后在javascript中进行设置。jQuery示例:$(document).ready(函数(){//scrolling code})代码>