我有一个页面,其中包含一个iframe
使用 Javascript 加载的页面:
索引.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
可见?除了使用to delay ,这是我绝对想避免的。 $(document).ready(...)
setTimeout
jScrollPane