2012-02-09 77 views
0

我發現了一個名爲iScroll的腳本,用於在iPad設備上將1個數字滾動機制用於垂直列表。 它所需要的是:iscroll jquery在部分回發中斷

<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面板中的列表並回滾滾動。

我試圖從的RegisterStartupScript我的C#,當觸發列表刷新的事件發生:

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

但這似乎並沒有任何工作。我甚至沒有收到我在腳本中添加的'alert'來檢查回傳。希望有人能幫忙?

已解決!!!!

function pageLoad(sender, args) { 
    if (args.get_isPartialLoad()) { 
myScroll = new iScroll('wrapper'); 
} 
} 

這隻會用asp.net更新面板

+0

還我不得不JS文件添加到網站,而不是從外部URL引用它 – user987723 2012-02-09 16:16:33

回答

1

的更新方法myScroll.refresh()應該更新面板的更新之後調用工作。 客戶端:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

function endRequestHandler(sender, eventArgs) 
{ 
    myScroll.refresh(); 
} 
0

ClientScriptManager將剛註冊的代碼,但由於<head>元素是不是在更新面板,它永遠不會被添加,即使它是不會執行。

你需要註冊一個客戶端事件處理程序初始化列表:

$(document).ready(function() { 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 
}); 
var endRequestHandler = function() { myScroll.refresh(); }; 
+0

感謝您答覆,但我不明白,所以當你說我需要註冊一個客戶端事件處理程序我實際上不需要做任何事情在asp.net代碼?只需在頁面標題中添加您發佈在我的orignal腳本中的內容? – user987723 2012-02-09 16:01:41