我有一个页面包含使用
Javascript加载的iframe
的index.html
<iframe id="myFrame" width="800" height="600" style="display: none;"></iframe> <div id="loader"><!-- some loading indicator --></div> <script type="text/javascript"> function someFunction() { var myFrame = document.getElementById('myFrame'); var loader = document.getElementById('loader'); loader.style.display = 'block'; myFrame.src = 'myFrame.html'; myFrame.onload = function() { myFrame.style.display = 'block'; loader.style.display = 'none'; }; } </script>
在iframe中加载的页面包含一些JavaScript逻辑,它计算某些元素的大小,以添加JS驱动的滚动条(jScrollPane jQuery Dimensions).
myFrame.html
<div id="scrollingElement" style="overflow: auto;"> <div id="several"></div> <div id="child"></div> <div id="elements"></div> </div> <script type="text/javascript"> $(document).load(function() { $('#scrollingElement').jScrollPane(); }); </script>
这在Chrome(可能还有其他Webkit浏览器)中起作用,但在Firefox和IE中失败,因为在jScrollPane被调用的时候,所有元素仍然是无效的,并且jQuery Dimensions无法确定任何元素的维度.
有没有办法确保我的iframe在$(document).ready(…)被调用之前可见?除了使用setTimeout来延迟jScrollPane,这是我绝对希望避免的事情.