我有许多iframe在页面上加载特定内容。父级和iframe都位于同一域中。
我在iframe中有一个滚动条,该滚动条似乎无法在所有浏览器中正确加载。但是,当我刷新iframe时,它会完美加载。我不知道为什么要这么做。
我使用了元刷新,该刷新有效,但我不希望页面仅一次刷新一次。
我正在寻找的解决方案将在打开iFrame之后以最小的延迟重新加载iFrame内容。
我意识到加载索引时,页面将加载所有iframe。 iframe出现在jQuery叠加层中,该叠加层也已加载但可见性:隐藏直到调用。因此,在此调用上是我希望重新加载iframe的时候。
[当我单击指向iFrame的链接时,有人可以帮我提出一个Javascript函数来重新加载iFrame吗?我已经很接近了,但是我对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。
所有线索都消失了,但是我确实找到了一个有效的代码段。不是我写的,我也不记得它是从哪里来的。只是发布帮助某人的问题,如果他们有同样的问题。
<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。
超出原始问题的范围,但是此jQuery代码段适用于跨域iframe元素,其中contentDocument.location.reload(true)方法不会由于沙箱操作。
//assumes 'this' is the iframe you want to reload.
$(this).replaceWith($(this).clone()); //Force a reload
基本上,它将整个iframe元素替换为其自身的副本。我们正在使用它来强制调整嵌入式第三方“哑”窗口小部件的大小,例如视频播放器,它们在大小改变时不会注意到。
在iframe元素本身上,设置onload:
iframe.onload = function() {this.contentWindow.location.reload(); this.onload = null;};
((仅在iframe的位置与主页位于同一域中时有效)
这是原始问题的完整解决方案:
<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;
无效。