2011-09-12 80 views
1

我使用AJAX.NET编写了一个聊天脚本。对于每个按钮点击,我使用下面的示例代码,我在其中使用OnClientClick函数向下滚动每个按钮单击即更新。服务器端JavaScript动作

<asp:Button ID="btn_msg" runat="server" Text="Submit" OnClick="btn_msg_Click" OnClientClick="scrolldown('div1')" /> 

这样的结果很好,我在工作的页面上,但在接收端滚动条没有得到更新。我猜想将选项OnClientClick更改为某些服务器操作将有所帮助。我尝试加入OnClick="btn_msg_Click; scrolldown('div1');",但这不起作用。有没有其他的方式来完成我的行动。

回答

0

您需要将endCallback事件挂接到scrolldown。 您尝试向下滚动内容的时刻尚未传送。

试试这样说:

<body onload=”load()”> 
<script> 
function EndRequestHandler() 
{ 
    scrolldown('div1'); 
} 

function load() 
{ 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
} 
</script> 
+2

请再次阅读该问题。 – Mal

+0

是的,完全误解了这个问题。查看更新后的版本。 –

1

乍一看,我相信安东是正确的。你看到这种行为的原因是万物运行的顺序。客户端脚本首先运行。然后是服务器脚本。服务器脚本导致回发(甚至通过更新面板),导致它再次呈现html,失去滚动条位置。

一旦ajax回发完成,Anton的代码将导致scrolldown函数运行。

附注: 如果我这样做,我会完全删除AJAX.NET并切换到jquery。你对这种东西有更多的控制权。