当OS X滚动条样式发生变化时是否会触发浏览器事件?

时间:2012-04-28 06:10:11

标签: javascript macos javascript-events webkit osx-lion

OS X Lion及以上版本允许用户打开/关闭iOS风格的浮动滚动条 - 可以通过“系统偏好设置”手动打开,也可以通过插入鼠标来启用。

基于WebKit的浏览器(也许是Opera?)会立即切换它们的滚动条样式 - 是否会发生这样的事件?(仅限WebKit就可以了)


一些注意事项:

  • 当用户切换滚动条样式时,OS X会触发NSPreferredScrollerStyleDidChangeNotification

  • WebKit似乎没有订阅此事件(在点击它时没有点击)。

  • 我怀疑WebKit正在通过NSViewBoundsDidChangeNotification事件处理这个问题(我认为这会触发滚动视图的内容视图)。

  • WebKit处理此事件within -[WebHTMLView _frameOrBoundsChanged],这似乎是一个潜在的重新布局点。

  • WebPDFView和检查员的WebNodeHighlight中也有对此通知的引用 - 两者似乎都与此案无关。

  • -[WebDynamicScrollBarsView adjustForScrollOriginChange]似乎表明事件可能不会被解雇(如果是这样,很高兴看到一些确认)


轮询更改对我来说不是一个可接受的答案(性能和用户更改值后跳转的布局)。

1 个答案:

答案 0 :(得分:0)

从我到目前为止所阅读的所有内容中,在此样式转换期间没有触发DOM事件

最具决定性的示例是创建overflow: auto div,然后通过monitorEvents记录其所有事件(在Safari或Chrome中)。更改滚动条样式时不会记录任何内容。

我对这个问题有一个open webkit bug(虽然它可能很小,但我们不会看到任何动作)。