我找到了一个名为iScroll的脚本,可以在iPad设备上用作Verticle列表的1图滚动机制。 它所需要的只是:
<script type="text/javascript" src="http://cubiq.org/dropbox/iscroll4/src/iscroll.js"></script>
和以下:
var myScroll;
function loaded() {
myScroll = new iScroll('wrapper');
}
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200); }, false);
在第一次加载页面时工作正常,但是使用它的列表在asp.net upadate面板中,并且回滚时滚动中断。
当触发列表刷新的事件发生时,我已尝试使用c#中的registerstartupscript:
public string ipadScript()
{
StringBuilder sb = new StringBuilder();
sb.Append("var myScroll;" + Environment.NewLine);
sb.Append("function loaded() {" + Environment.NewLine);
sb.Append("alert('h');" + Environment.NewLine);
sb.Append("myScroll = new iScroll('wrapper');" + Environment.NewLine);
sb.Append("}" + Environment.NewLine);
sb.Append("document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);" + Environment.NewLine);
sb.Append("document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200); }, false);" + Environment.NewLine);
return sb.ToString();
}
ClientScriptManager cs = Page.ClientScript;
cs.RegisterClientScriptBlock(this.GetType(), "ipadKey", ipadScript(), true);
但这似乎也不起作用。我甚至没有得到我在脚本中添加的'警报'来检查回发。希望有人可以提供帮助吗?
解决!!!!
function pageLoad(sender, args) {
if (args.get_isPartialLoad()) {
myScroll = new iScroll('wrapper');
}
}
这只适用于asp.net更新面板
答案 0 :(得分:1)
更新面板后应调用刷新方法myScroll.refresh()
。
客户方:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
function endRequestHandler(sender, eventArgs)
{
myScroll.refresh();
}
答案 1 :(得分:0)
ClientScriptManager
只会注册代码,但由于<head>
元素不在更新面板中,因此永远不会添加,即使它不会执行。
您需要注册一个客户端事件处理程序来重新初始化列表:
$(document).ready(function() {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
});
var endRequestHandler = function() { myScroll.refresh(); };