我有一些以前开发用于Android应用程序的Web应用程序,我们正试图将它们移植到iOS。
第一个问题是我们的广告没有留在原地,因为在移动版Safari中,position:fixed并不好用。所以,我下载了iScroll。
我发现iScroll与我们的RSS提要阅读器(zRSSFeed for jQuery)不相称。实际上,当两者在同一页面上启用时,iScroll功能“可以正常工作”,但会卡在页面顶部。
我已发布到iScroll用户组(https://groups.google.com/group/iscroll/browse_thread/thread/5dd274ff4159a672),但没有得到有用的答案。
我甚至尝试更改为不同的RSS库,但似乎它们都引发了这个问题。
以前有人有这个问题吗?有人解决了吗?我应该放弃并将广告放在网络应用的底部,还是什么?
谢谢,所有。
编辑:我想我应该添加一些代码。网络内容的基本结构:
....
<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 :(得分:0)
我建议您首先使用已解析的rs填充#feedResults并完成此操作,启动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)。
答案 1 :(得分:0)
我刚才遇到了同样的问题。我的解决方案是增加位置:绝对;直接在你的包装器内的元素,在你的情况下你需要添加position:absolute; to feedResults。
答案 2 :(得分:0)
在基于HTML5的应用程序中,平滑滚动始终具有挑战性。有第三方库可用于实现平滑滚动,但实现非常复杂。在这个滚动库中,用户只需要在可滚动的分区中添加 scrollable = true 属性,然后该div将像平滑的原生卷轴一样滚动。请先阅读readme.doc文件以开始处理
图书馆链接
http://github.com/ashvin777/html5
优点:
1无需手动创建滚动对象。
2如果滚动条中的任何数据发生变化,Scroller将自动刷新。
3因此无需手动刷新。
4嵌套滚动内容也可以,没有双滚动问题。
5适用于所有webkit引擎。
6如果用户想要访问该滚动对象,则可以通过编写“SElement.scrollable_wrapper”来访问它。 scrollable_wrapper是html页面中定义的可滚动除法的id。