在iframe中重新加载页面

时间:2014-07-31 19:24:26

标签: javascript iframe

我有一个iframe,我想在按下按钮时重新加载当前显示的页面。

HTML:

<iframe id="webView"></iframe>

JS:

function reloadPage()
{
    var webView = document.getElementById("webView");

    //CODE
}

reloadPage()方法中,我尝试了不同的解决方案:

调用reload()

webView.contentWindow.location.reload();

这不起作用,因为iframe中加载的页面来自与主页面不同的域。

设置src

webView.src = wevView.src;

它提供了错误的结果,因为它包含我设置为iframe的初始网址,而不是当前网址。

设置位置

webView.contentWindow.location = webView.contentWindow.location

我原以为它不能使用来自不同域的网址(与调用reload()相同),但实际上它可以正常工作并且也能提供良好的结果。
好但不完美:location对象保存当前网址但删除任何参数。

例如,如果框架当前正在显示以下网址:

http://www.myserver.com/thatsite/?page_id=11

location对象包含此网址:

http://www.myserver.com/thatsite/

只要网址中没有参数,这个就可以正常工作。

更好的解决方案?

我非常依赖带参数的网址(主要是WordPress安装),所以我需要一种方法来重新加载它们。
有人知道解决方案吗?

2 个答案:

答案 0 :(得分:1)

这是不可能的,请看这个帖子:

Get current URL from IFRAME

和这一个

How do I get the current location of an iframe?

答案 1 :(得分:0)

由于设置位置有效,您可以使用location.search检索GET参数并以此方式重新构建URL。

示例:

webView.contentWindow.location = webView.contentWindow.location + webView.contentWindow.location.search