如何在不重新加载 iframe 的情况下更改 iframe src

How to change iframe src without reloading the iframe?

本文关键字:iframe 情况下 src 加载 新加载      更新时间:2023-09-26

我有两个框架,我使用 JavaScript 将第一个帧(myframe)的内容复制到第二个帧(myframe2)并设置 myframe2 的 src

<iframe id="myframe" src="../Page1.aspx" width="100%" height="100px"></iframe>
<iframe id="myframe2"  width="100%" height="100px"></iframe>
<button onclick="myFunction();return false;">Try it</button>
<script>
    function myFunction() {
        var iframe1 = document.getElementById("myframe");
        var iframe2 = document.getElementById("myframe2");
        iframe2.contentWindow.document.body.parentElement.innerHTML = iframe1.contentWindow.document.body.parentElement.innerHTML;
        iframe2.setAttribute("src", iframe1.src);
    }
</script>

设置"src"属性后重新加载 FrameSecond ,但我不需要它这样做。谁能帮我解决这个问题?

使用 replaceState(state, title, URL)

iframe2.contentWindow.history.replaceState('WhatEverNameYouWant', "", iframe1.src);

我遇到了同样的问题。我需要"知道"加载到Iframe中的文档的位置是什么,这样我就可以在其他地方显示它的位置。我有通过设置更改 iframe 位置的输入

myIFrame.src =  ... 

这工作正常,除了后来我意识到当我单击后退或前进按钮时,IFrame 的内容发生了变化,但这(似乎)并没有改变引用 IFrame 元素的 src 属性的值。当我在 iframe 文档中添加链接以在它们之间导航时,同样的问题。

我的解决方案是在加载到IFrame的文档的onload处理程序中将加载的URL记录到父窗口的字段中。当包含文档需要知道 IFrame 中加载的内容时,它会查询该变量,而不是依赖其 IFrame 元素的 .src -属性,该元素似乎不能自动与 iframe 的实际内容保持同步。

顺便说一句。我还尝试从 iframed 文档的 onload -handler 显式设置 iframe elemen 的 .src -属性的值。这是有效的,但导致 iframe 内容的可见第二次加载。通过使用单独的显式位置来存储加载到 iframe 中的文档的 url,它不会被加载两次,并且一切顺利。

不是这个问题的答案,但也许它对某人有用。

我需要将语言传递给 Iframe,对我有用的是将参数添加到哈希而不是查询字符串中。 因为哈希更改不会触发 Iframe 中的页面重新加载:

例如"http://...?uiCulture=en' --> 'http://...#uiCulture=en'