【发布时间】:2014-01-16 22:50:44
【问题描述】:
如何在页面上的 Opera mini 移动浏览器中向下或向上滚动到特定的 Y-px 位置,而不使用任何 3rd 库只是纯 js?尝试了从 scrollTo 到 SCrollInto 的所有可能视图,但没有任何效果。请帮忙。
【问题讨论】:
标签: javascript jquery jquery-events jquery-mobile-listview opera-mini
如何在页面上的 Opera mini 移动浏览器中向下或向上滚动到特定的 Y-px 位置,而不使用任何 3rd 库只是纯 js?尝试了从 scrollTo 到 SCrollInto 的所有可能视图,但没有任何效果。请帮忙。
【问题讨论】:
标签: javascript jquery jquery-events jquery-mobile-listview opera-mini
滚动行为在每个现代浏览器中都是正确的。
当您只是打开新窗口/标签并且不触摸屏幕时,通过 window.scrollTo(x,y) 的 javascript 滚动 API 可以工作 fine,因为您没有向浏览器发出要滚动的信号。
但是如果您在页面加载时启动滚动事件(例如滑动),浏览器将忽略 JavaScript 滚动 API,例如 scrollTo。如果您刷新页面,javascript 滚动 API 将不起作用。因为在刷新之前用户所在的页面位置返回用户是一种很好的做法。
哈希书签也可以scroll页面。如果您将 #bookmark 设置为页面 URL,则页面将滚动到书签,直到您滚动页面。然后你滚动所有内容,就像我在上面写的:javascript scroll API will be ignored。
但无论如何都有一种滚动方式 - manipulate 带有哈希书签:
window.scrollTo(0, 500);//will not work if the user scroll the page
location.hash = '';//reset hash
setTimeout(function () {
location.hash = 'bookmark';//will scroll to bookmark in any case
}, 1000)//remember about operamini timers limit
之所以如此,是因为用户必须控制页面,而不是代码。
【讨论】:
window.onload = function() { setTimeout(window.scroll(0,50),100); } 之类的代码没有滚动发生:(。
scrollTo 不会像你的方面那样工作,这是正常的。我的#bookmark 代码示例展示了如何模仿它(它在operamini 中工作)
从Opera doc,在不支持的 DOM 事件部分下方,您会发现:
如您所见,keypress 和 keyup 等按键事件不是 支持的。触摸和滚动事件都不是。
所以 Opera Mini 不支持 scroll 事件。见Other References
【讨论】: