使用相应的url使用自己的上下文更改window.location

时间:2012-04-27 01:30:53

标签: javascript iframe relative-path

问题

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

  

parent.html
  子目录/ child.html

在子页面内,我想使用相对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设置另一个窗口的位置,以便相对于该窗口进行解释?

1 个答案:

答案 0 :(得分: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;