【问题标题】:Detect Zoom in Firefox在 Firefox 中检测缩放
【发布时间】:2011-06-26 23:18:04
【问题描述】:

我想检测浏览器是放大还是缩小(其实并不关心值,但我认为在决策过程中无论如何都需要找到它)。我已经阅读了很多关于该主题的其他 SO 帖子,但是给出的解决方案都没有在 FF 上工作(尽管有 IE7/8 和 chrome 解决方案)。

哦,我不能使用闪光灯,所以闪光灯解决方案是不可能的。

编辑:我必须能够在初始页面加载时检测到这一点

【问题讨论】:

  • 我认为不存在满足您所有要求的解决方案。我会喜欢被证明是错误的。
  • 是否应用了缩放坦率地说与您无关。
  • 很多布局在缩放时出现问题。特别是在您有像素完美对齐的浮点数的地方。但这在很大程度上是特定于浏览器的事情。您将在不同的浏览器中获得不同的效果,因此即使您可以检测到缩放,您还需要检测它是哪个浏览器、哪个版本、什么缩放级别,并对每种可能的组合进行不同的补偿。可能不可行。
  • 我找到了 FF4 和 FF3.5 的解决方案,但没有找到其他版本的 Firefox。见stackoverflow.com/questions/1713771/…
  • @reisio:如果每个浏览器都能正确实现缩放而不破坏布局,那么是的,这不关我们的事。但情况并非总是如此。而且,附带说明一下,当缩放级别之前更改时,许多这些解决方案都会失败,其中新页面加载或刷新的脚本通常无法检测到非默认缩放设置。

标签: javascript html css firefox


【解决方案1】:

使用现代版本的 FireFox,您现在可以执行以下操作:

DPR = window.devicePixelRatio;
if ( DPR <= 0.999 || DPR >= 1.001 ){
   // User has zoomed in or zoomed out
}

【讨论】:

  • 非常非常有用。太糟糕了,它在 Safari 中不起作用(缩放对它没有影响)。它可以在 Chrome 中使用。
  • DPR 在 Retina 设备上的值为 2
【解决方案2】:

我建议你看看这个generic question。并且可能关闭你自己的副本(我自己不投票这样做,因为它不是“精确的副本”。

【讨论】:

    【解决方案3】:

    如果缩放意味着用户按下 ctrl/cmd+[plus] 而不是 css 转换,则可以检测计算的字体大小。刚刚签入 FF 4.0.1/Mac,它对我有用。为了检测计算出的字体大小,我使用了这个问题的代码:Get computed font size for DOM element in JS

    缩放后值发生了变化。您需要知道某个元素的 font-size 应该是多少(在 css 中设置)并将其与它的实际值进行比较。

    【讨论】:

    • 为什么选择FF4?它已经是 27 年了,而且绝对只有不到 3% 的网络浏览正在使用该版本...
    【解决方案4】:

    也许您可以检测到错误,而不是检测缩放。

    例如,如果您的布局预计元素的偏移量为 100,200,而查询显示它为 300,450,您就会知道它在错误的位置,您可以应用修复/解决方法。

    这还有一个额外的好处,即如果缩放问题在浏览器的未来版本中得到修复,您将不会不必要或错误地应用您的修复。

    【讨论】:

      【解决方案5】:

      您是否尝试检测分辨率,这可能有助于您检测缩放。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-21
        • 2011-12-02
        • 2012-01-29
        • 1970-01-01
        • 2017-11-08
        • 1970-01-01
        • 2011-07-10
        • 2011-09-07
        相关资源
        最近更新 更多