问题
在我的应用程序中,我有一个父页面,其中包含子目录中子页面的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设置另一个窗口的位置,以便相对于该窗口进行解释?
答案 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;