【问题标题】:Changing window.location with relative url using its own context使用自己的上下文使用相对 url 更改 window.location
【发布时间】:2012-04-27 01:30:53
【问题描述】:

问题

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

父.html
子目录/child.html

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

父.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 设置另一个窗口的位置,从而相对于该窗口进行解释?

【问题讨论】:

    标签: javascript iframe relative-path


    【解决方案1】:

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

    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;
    

    【讨论】:

    • 如果您尝试读取 window.location 的 indexOf - 请改用 window.location.href 会出错
    • 我收到一个错误:不安全的 JavaScript 尝试从具有 URL childUrl 的框架访问具有 URL parentUrl 的框架 域、协议和端口必须匹配。
    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    相关资源
    最近更新 更多