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

时间:2016-07-16 07:20:21

标签: javascript jquery asp.net

我有两个框架,我使用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 重新加载,但我不需要它。任何人都可以帮我这个吗?

3 个答案:

答案 0 :(得分:0)

使用replaceState(state, title, URL)

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

答案 1 :(得分:0)

我遇到了同样的问题。我需要“知道”加载到iframe中的文档的位置,以便可以在其他位置显示其位置。我输入的内容通过设置更改了iframe的位置

myIFrame.src =  ... 

这很好用,除非我意识到我单击后退或前进按钮时IFrame的内容已更改,但是并没有(似乎)更改了引用IFrame元素的src属性的值。当我在iframe文档中添加链接以在它们之间进行导航时,同样存在问题。

我的解决方法是在加载到iframe中的文档的onload-handler中将加载的URL记录到父窗口的字段中。当包含文档需要知道IFrame中加载了什么文件时,它会查询该变量,而不是依赖其IFrame -element的.src-属性,后者似乎并没有自动更新iframe的实际内容。

顺便说一句。我还尝试从iframed文档的onload -handler显式设置iframe元素的.src -attribute的值。可以,但是造成了iframe内容的可见第二次加载。通过使用一个单独的显式位置来存储加载到iframe中的文档的url,它不会被加载两次,并且一切都可以顺利进行。

答案 2 :(得分:0)

确实不是这个问题的具体答案,但也许对某人有用。

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

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