我有很多iframe在我的网页上加载特定内容。 parent和iframe都在同一个域中。
我在iframe中有一个滚动条似乎无法在所有浏览器中正确加载。但是当我刷新iframe时,它会加载完美。我不知道为什么会这样做。
我使用了元刷新,但是我不希望页面不断刷新,只需一次。
我正在寻找的解决方案将在iFrame打开后重新加载iFrame内容,延迟时间最短。
感谢您的时间和帮助!
-Brett
----------编辑:--------
我意识到我的页面会在加载索引时加载我的所有iframe。 iframe出现在jQuery覆盖中,它也被加载但可见性:隐藏直到被调用。因此,在此调用是我希望重新加载iframe的时候。
当我点击指向iFrame的链接时,有人可以帮我提出一个重新加载iFrame的Javascript函数吗?我已经接近但我对js一无所知,而且我一直在做空。我有一个重新加载页面的函数,但我无法弄清楚如何只调用一次。
到目前为止,我有这个:
<script type="text/javascript">
var pl;
var change;
pl=1;
function ifr() {
if (pl=1) {
document.location.reload([true]);
alert("Page Reloaded!");
change=1;
return change;
}
change+pl;
}
所以基本上它使用document.location.reload来重新加载页面。我试图将pl更改为1以外的其他内容,因此该函数不再运行。我一直用onLoad从身体上调用这个JS。
答案 0 :(得分:8)
此处的所有潜在客户都已死亡,但我找到了一个有效的代码段。不是我写的,我不记得它来自哪里。只是张贴以帮助某人他们应该有同样的问题。
<div class="overlay-content"> //Content container needed for CSS Styling
<div id="Reloader"> //iFrame will be reloaded into this div
</div>
//Script to reload the iframe when the page loads
<script>
function aboutReload() {
$("#Reloader").html('<iframe id="Reloader" height="355px" width="830px" scrolling="no" frameborder="0" src="about.html"></iframe>');
}
</script>
</div>
基本上只需在打开iFrame的窗口时加载iFrame源,而不是在加载原始页面时加载iFrame。
答案 1 :(得分:3)
除了原始问题的范围之外,这个jQuery snippit适用于跨域 iframe 元素,其中contentDocument.location.reload(true)方法不会因沙盒而导致。
//assumes 'this' is the iframe you want to reload.
$(this).replaceWith($(this).clone()); //Force a reload
基本上它用自身的副本替换整个iframe元素。我们正在使用它来强制调整嵌入式第三方“哑”小部件的大小,这些小部件就像视频播放器一样,当它们的尺寸发生变化时不会注意到。
答案 2 :(得分:2)
在iframe元素本身上,设置一个onload:
iframe.onload = function() {this.contentWindow.location.reload(); this.onload = null;};
(仅当iframe的位置与主页位于同一个域中时才有效)
答案 3 :(得分:2)
以下是原始问题的完整解决方案:
<iframe onload="reloadOnce(this)" src="test2.html"></iframe>
<script>
var iframeLoadCount = 0;
function reloadOnce(iframe) {
iframeLoadCount ++;
if (iframeLoadCount <= 1) {
iframe.contentWindow.location.reload();
console.log("reload()");
}
}
</script>
更新的问题不是很清楚(什么是“iFrame的链接”以及它在你的代码片段中的位置?),但是您在代码中遇到了一些问题:
parent.
variableName 访问它 - 这应该有效我认为)if (pl=1) {
应使用==
,因为=
始终是作业。change+pl;
无效。