在页面加载完成后js获取table的高度不正确,刷新后获取的高度就正确了,求原因及解决方法。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在页面加载完成后js获取table的高度不正确,刷新后获取的高度就正确了,求原因及解决方法。相关的知识,希望对你有一定的参考价值。

原因找到了。是因为这个iframe先是隐藏的,获取的高度不正确。在判断该iframe的display不为none再获取就ok。

参考技术A iframe里面加载的页面跟本页面的加载完成时间是不一定的,所以你这里直接取,可能iframe的页面还没加载完。采用以下方式试一下:

<iframe src="....jsp" onload="这里调用你要运行的代码"></iframe>
参考技术B offsetHeight追问

不管用啊,获取的还是不正确了

参考技术C 能贴一下代码吗?没代码什么都看不出来追问

iframe的src是一个jsp页面,我在这个jsp页面获取里面table的高度来设置iframe的高度,jsp的js代码是$("#myframe",window.parent.document).height($("#mytable").height());可是第一次获取的高度不正确。重新加载就ok了。

大坑啊!!!关于页面加载完毕事件!!!

这个坑导致我页面加载完毕后获取元素高度有问题,获取不正确或者是很小才20px,元素本身高度几百,困扰了我这个新手几天。原因就是js原生的onload事件和jq的ready事件的区别。

1.执行时间 

        window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。 
        $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。 

2.编写个数不同 

         window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个 
         $(document).ready()可以同时编写多个,并且都可以得到执行 

3.简化写法 

         window.onload没有简化写法 
         $(document).ready(function(){})可以简写成$(function(){});

也就是说你在jq的ready事件下获取元素高度是获取不到或者说获取值不正确的,因为此时只是dom结构加载完毕,图片等资源未必加载完成了,所以会出现多刷新几次,有时候能获取正确有时候又不能的情况。也就是说jq的ready事件是比原生js的onload 事件先执行的,所以说慎用啊!!!没特要求还是用onload吧,防止掉坑还找不到原因。

以上是关于在页面加载完成后js获取table的高度不正确,刷新后获取的高度就正确了,求原因及解决方法。的主要内容,如果未能解决你的问题,请参考以下文章

图片加载完成之前获取图片高度

iOS获取WKWebView的高度

jQuery 是如何判断HTML页面加载完毕的?它的原理是啥?

由于完成处理程序,单元格高度未正确计算

UIWebView 在 webview 完成加载时高度不正确

在页面加载的时候就想要执行某个JS操作而不是在页面加载完后再执行该怎么做