在Android版Firefox的onload事件中,window.innerWidth的值错误吗?

坦率

好了,所以,我所面临的问题是这样的:我的手机火狐浏览器不检索正确的价值观window.innerWidthdocument.documentElement.clientWidth,的甚至宽度div风格的页面加载后,占据整个客户端窗口。

我并不疯,我的代码在其他浏览器中也能正常工作!出于某种原因,Firefox会使用默认值初始化这些值,然后在以后获取正确的值。如果在任何时候我用中断我的JavaScript alert(),这些属性将在之后变得神奇起来准确。

我在互联网上搜寻了一个答案,我只能找到一种解决方法:用于window.setTimeout延迟使用这些属性,直到它们有时间正确填充为止。这很疯狂!用户想要速度,而不仅仅是为了在Firefox浏览器上查看我的网站而额外的延迟。

我不明白的是,我可以div在数值变得准确之前进行设置以完全填充客户端窗口。我通过将div ID的宽度和高度设置为100%在CSS中进行此操作。document.documentElementdocument.getElementById("my_div");所有文档元素都加载后基本相同,因此,如果浏览器div最初没有正确的客户端窗口尺寸,浏览器如何知道应该有多大

我尝试在a中运行我的代码,window.addEventListener("load",function(event_){ //My Code });但是仍然不会生成这些值。之后是否有页面加载事件window.onload

如果有人能告诉我为什么只有Firefox移动版似乎表现出这种奇怪的行为,那么我将给您带来最高的5分。

以下是一些用于重现问题的示例代码:

<!DOCTYPE HTML>
<html>
    <head>
        <!-- Added " after javascript during edit. -->
        <script type="text/javascript">
            window.addEventListener("load",function(event_){
                var output=document.getElementById("output");
                /* Returns some default value like 980. */
                output.innerHTML=window.innerWidth;

                alert("After this alert, the value will change.");
                /* Returns an accurate value like 511. */
                output.innerHTML=window.innerWidth;
            });
        </script>
        <!-- Added title during edit. -->
        <title>Title</title>
    </head>
    <body>
        <p id="output">Default Output</p>
    </body>
</html>

我的Firefox Android版是35.0.1。我的Android版本是4.4.4。在我的设备上,Firefox在输出p元素中显示“ 980”,显示警报,然后再次显示“ 980”。页面刷新后,前两个步骤保持不变,但是警报后的输出更改为360 document.documentElement.clientWidth我尝试的任何属性似乎都无法获得正确的值。Firefox在页面加载后似乎有某种延迟,才能访问客户端窗口的尺寸...

我在没有JQuery的情况下尝试了verge.airve.com插件,它的初始反馈保持在980。在Chrome上它也初始化为980,这很奇怪,因为没有它,Chrome可以按预期工作...

经过大量辩论,找到了解决方案!Firefox加载后显然会调整窗口的大小(我想是很不错的选择,谁确实知道)!因此,通过在window.onload之外添加一个调整大小的事件处理程序,可以避免此问题!有关更多详细信息,请参见下面的接受的答案。

最大缩放

装入整个文档并调整大小后,请确保完成测量。

window.onload = showViewport;
window.onresize = showViewport;

function showViewport() {
  var output=document.getElementById("output");
  var width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
  var height= Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
  output.innerHTML = "Viewport size is " + width + "x" + height;
}
<body>
  <p id="output">Default Output</p>
</body>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

缓存 window.innerHeight 和 window.innerWidth 的值

来自分类Dev

我应该使用window.onload事件吗

来自分类Dev

存储window.innerWidth值,并在调整大小时计算与新值的差?

来自分类Dev

innerwidth和innerheight在android和safari上获得不同的值

来自分类Dev

Firefox中的日期值错误

来自分类Dev

Swift中的switch语句允许重复的大小写值。这是功能或错误吗?

来自分类Dev

十六进制中的枚举类型使用Java返回错误的值吗?

来自分类Dev

为什么简单计算的值在Java中给出错误的结果?它会溢出吗?

来自分类Dev

Swift中的switch语句允许重复的大小写值。这是功能或错误吗?

来自分类Dev

返回错误的值,但在系统中可以正常读取吗?爪哇

来自分类Dev

在firefox移动版(应用程序)中,无法点击href链接中的填充吗?漏洞?

来自分类Dev

FIFO或链中是否有多个window.onload事件?

来自分类Dev

控制Android版TextWatcher中的事件触发

来自分类Dev

在Android Studio中消失的评论-是错误吗?

来自分类Dev

钛金版AndroidManifest中'android:targetSandboxVersion'属性的值无效

来自分类Dev

错误:“属性值必须恒定”。我可以在编译时从枚举中获取一个常量吗?

来自分类Dev

这是android searchView错误吗?

来自分类Dev

Android EditText值错误?

来自分类Dev

PhoneStateListener Android 错误值

来自分类Dev

这是Resharper中的错误吗?

来自分类Dev

这是PowerShell中的错误吗?

来自分类Dev

这是IE中的错误吗?

来自分类Dev

这是GCC中的错误吗?

来自分类Dev

是Selenium文档中的错误吗?

来自分类Dev

是python中的舍入错误吗?

来自分类Dev

达特朗(Dartlang)的Innerwidth吗?

来自分类Dev

$(window).height()返回错误的值

来自分类Dev

$(window).height()返回错误的值

来自分类Dev

window.onload = stuff和window.onload = stuff()之间有区别吗?

Related 相关文章

  1. 1

    缓存 window.innerHeight 和 window.innerWidth 的值

  2. 2

    我应该使用window.onload事件吗

  3. 3

    存储window.innerWidth值,并在调整大小时计算与新值的差?

  4. 4

    innerwidth和innerheight在android和safari上获得不同的值

  5. 5

    Firefox中的日期值错误

  6. 6

    Swift中的switch语句允许重复的大小写值。这是功能或错误吗?

  7. 7

    十六进制中的枚举类型使用Java返回错误的值吗?

  8. 8

    为什么简单计算的值在Java中给出错误的结果?它会溢出吗?

  9. 9

    Swift中的switch语句允许重复的大小写值。这是功能或错误吗?

  10. 10

    返回错误的值,但在系统中可以正常读取吗?爪哇

  11. 11

    在firefox移动版(应用程序)中,无法点击href链接中的填充吗?漏洞?

  12. 12

    FIFO或链中是否有多个window.onload事件?

  13. 13

    控制Android版TextWatcher中的事件触发

  14. 14

    在Android Studio中消失的评论-是错误吗?

  15. 15

    钛金版AndroidManifest中'android:targetSandboxVersion'属性的值无效

  16. 16

    错误:“属性值必须恒定”。我可以在编译时从枚举中获取一个常量吗?

  17. 17

    这是android searchView错误吗?

  18. 18

    Android EditText值错误?

  19. 19

    PhoneStateListener Android 错误值

  20. 20

    这是Resharper中的错误吗?

  21. 21

    这是PowerShell中的错误吗?

  22. 22

    这是IE中的错误吗?

  23. 23

    这是GCC中的错误吗?

  24. 24

    是Selenium文档中的错误吗?

  25. 25

    是python中的舍入错误吗?

  26. 26

    达特朗(Dartlang)的Innerwidth吗?

  27. 27

    $(window).height()返回错误的值

  28. 28

    $(window).height()返回错误的值

  29. 29

    window.onload = stuff和window.onload = stuff()之间有区别吗?

热门标签

归档