1

问题

在我的应用程序中,我有一个父页面,其中包含一个 iframe 到子目录中的子页面。

parent.html
子目录/child.html

在子页面中,我想使用相对于 parent 的相对 url(“targetPage.html”)设置父页面的位置

parent.html
targetPage.html (正确的目标)
subdir/child.html (行动的来源)
subdir/targetPage.html (不正确的)

从孩子的内心,我可以说:

window.parent.location = "targetPage.html";

...但是当然,这(错误地)将父页面导航到“subdir/targetPage.html”,因为代码在子上下文中运行。

在父级调用代码无济于事:

window.parent.myFunctionToNavigateToTarget(); // defined in parent to navigate to "targetPage.html"

...具有相同的效果,因为父函数正在子上下文中运行。

问题

有没有一种优雅的方法可以使用相对 URL 设置另一个窗口的位置,以使其相对于该窗口进行解释?

4

1 回答 1

2

您可以从父窗口中获取主机名和路径,然后附加您的目标页面:

var targetPage = 'somepage.html';

var url = window.parent.location.href;
if(url.indexOf('.') > -1){
   url = url.substring(0, url.lastIndexOf('/') + 1);
}
window.parent.location = url + targetPage;
于 2012-04-27T01:50:02.610 回答