【问题标题】:Trigger scroll in Opera mini在 Opera mini 中触发滚动
【发布时间】:2014-01-16 22:50:44
【问题描述】:

如何在页面上的 Opera mini 移动浏览器中向下或向上滚动到特定的 Y-px 位置,而不使用任何 3rd 库只是纯 js?尝试了从 scrollTo 到 SCrollInto 的所有可能视图,但没有任何效果。请帮忙。

【问题讨论】:

    标签: javascript jquery jquery-events jquery-mobile-listview opera-mini


    【解决方案1】:

    滚动行为在每个现代浏览器中都是正确的。

    当您只是打开新窗口/标签并且不触摸屏幕时,通过 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.scroll 即使没有滑动也无法正常工作,当我加载我的页面时,代码中包含 window.onload = function() { setTimeout(window.scroll(0,50),100); } 之类的代码没有滚动发生:(。
    • 我的回答是关于 scrollTo 不会像你的方面那样工作,这是正常的。我的#bookmark 代码示例展示了如何模仿它(它在operamini 中工作)
    【解决方案2】:

    Opera doc,在不支持的 DOM 事件部分下方,您会发现:

    如您所见,keypress 和 keyup 等按键事件不是 支持的。触摸和滚动事件都不是。

    所以 Opera Mini 不支持 scroll 事件。见Other References

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      相关资源
      最近更新 更多