我在 DIV 中运行 iScroll 4,但 DIV 的高度是动态生成的,并且搞砸了 iScroll
<script src="js/iscroll/iscroll.js?v4"></script>
<script>
var myScroll;
function loaded() {
myScroll = new iScroll('wrapper-sidebar-left');
myScroll = new iScroll('wrapper-sidebar-right');
myScroll = new iScroll('wrapper');
}
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', loaded, false);
</script>
如果我给包含 DIV 的 iScrolls 一个硬编码的高度,那么它可以正常工作。
但它是由 javascript 创建的动态高度。iScroll 会忽略它。但是,当您在桌面浏览器上调整视口大小时,它就会启动并起作用。
这是创建动态高度的脚本。
<script>
$(document).ready(function() {
$("#latest-tweet").tweet({
count: 1,
username: ["motocomdigital"],
loading_text: "searching twitter..."
}).bind("loaded", function(){
var tweetheight = $("#tweet-area").height();
$("#sidebar-wrapper").css({ bottom: tweetheight });
});
});
</script>
忽略 twitter 脚本 - 它在确定包含 DIV 的高度的绑定函数之后。
包含 DIV 的“滚动条”的高度由以下 CSS 值确定:顶部:0px 和“底部”值。但是底部的 CSS 值是动态的。
在此处查看实时项目 - 这是它损坏的时候,单击菜单以查看侧边栏中损坏的滚动条。
然后查看下面的同一个项目,但在头部添加了一个硬编码的底部 CSS 值,并删除了脚本。这很好用。
这意味着 iScroll 忽略了底部的 CSS 值(但是当您调整视口大小时它开始工作,但在设备上没有好处)
任何帮助将不胜感激
谢谢,乔什
更新,这有效 - 但它会每次都有效吗?
<script>
var myScroll;
function loaded() {
setTimeout(function () {
myScroll = new iScroll('wrapper-sidebar-left', {
scrollbarClass: 'sub-scrollbar',
useTransform: false,
onBeforeScrollStart: function (e) {
var target = e.target;
while (target.nodeType != 1) target = target.parentNode;
if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA')
e.preventDefault();
}
});
myScroll = new iScroll('wrapper-sidebar-right');
}, 1000);
myScroll = new iScroll('wrapper');
}
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', loaded, false);
</script>