2011-08-12 62 views
0

我有一些以前開發用於Android應用程序的web應用程序,我們試圖將它們移植到iOS。使用iScroll在iOS中的web應用程序中滾動

第一個問題是,我們的廣告沒有留在原地,因爲position:fixed在移動Safari中並不好。所以,我下載了iScroll。

我發現iScroll與我們的RSS feed閱讀器(zRSSFeed for jQuery)不兼容。實際上,如果兩者都在同一頁面上啓用,則iScroll功能「有效」,但會卡在頁面的頂部。

我發佈到iScroll用戶組(https://groups.google.com/group/iscroll/browse_thread/thread/5dd274ff4159a672),但沒有得到有用的答案。

我甚至試圖改變到不同的RSS庫,但似乎他們都引發這個問題。

有沒有人有過這個問題?有沒有人解決它?我應該放棄並將廣告放在web應用程序的底部,或者是什麼?

謝謝,所有。

編輯:我想我應該添加一些代碼。

的網頁內容基本結構:

.... 
<div id="appBody"> 
    <div id="feedResults"> 
     <!-- rss entries go here --> 
    </div> 
</div> 
<div id="appAdvertisements"> 
    <!-- admob JS stuff goes here --> 
</div> 
.... 

基本JS:

var scroll; 
document.addEventListener('touchmove', function (e) { e.preventDefault();}, false); 
function loaded() { 
    scroll = new iScroll('appBody'); 
    $('#feedResults').rssfeed('<feedurl>', {<options>}, function() { scroll.refresh() }); 
} 
document.addEventListener('DOMContentLoaded', loaded, false); 

回答

0

我建議你先用你的解析RSS填充#feedResults和的onComplete這個動作,你開始iScroll 。不要同時啓動,也不要在沒有setTimeout的情況下使用refresh(),如Matteo在iScroll4文檔中所述。

考慮代表的的onComplete後()的函數,嘗試這樣的事情:

var scroll; 
function loaded() { 
    $('#feedResults').rssfeed('<feedurl>', {<options>}, function() { 
     scroll = new iScroll('appBody'); 
    }); 
} 
document.addEventListener('touchmove', function (e) { e.preventDefault();}, false); 
document.addEventListener('DOMContentLoaded', loaded, false); 

我認爲,這將使時間到DOM有你在它的RSS,然後iscroll將計算正確的高度你的整個包裝(appBody在這種情況下)。

0

我剛剛有完全相同的問題。對我來說,解決方案是增加位置:絕對;直接在你的包裝中的元素,在你的情況下,你需要添加位置:絕對;給feedResults。

0

在基於HTML5的應用程序中,平滑滾動總是具有挑戰性。有第三方庫可用於實現平滑滾動,但實現非常複雜。在這個滾動庫中,用戶只需要在滾動分區中添加scrollable = true屬性,那麼div就會像平滑的本地滾動條一樣滾動。請先閱讀README.DOC文件開始工作

庫鏈接

http://github.com/ashvin777/html5


優點:

1無需手動創建滾動對象。
2如果滾動條中的數據發生更改,滾動條會自動刷新。
3所以不需要手動刷新。
4嵌套滾動內容也可能沒有雙滾動問題。
5適用於所有webkit引擎。
6如果用戶想要訪問該滾動器對象,則可以通過編寫「SElement.scrollable_wrapper」來訪問它。 scrollable_wrapper是在html頁面中定義的可滾動分區的id。

相關問題