【问题标题】:How to set an iframe url to redirect inside the iframe instead of redirecting to parent page如何设置 iframe url 以在 iframe 内重定向而不是重定向到父页面
【发布时间】:2018-07-31 03:56:10
【问题描述】:

我有一个 WordPress 页面 https://www.sitename.com/manual。在这个页面中,我有一个嵌入的 HTML 页面。

<iframe src="https://www.sitename/othermanual/aplication.htm"></iframe>

我要做的是从src 中的<iframe> 中获取aplication.htm,并将其作为 https://www.sitename.com/manual 有这样的东西:

https://www.sitename.com/manual?page=aplication.htm

总之,我正在尝试解析 url 的 aplication.htm 部分并在主 url 中使用它。我已经读到锚点可能是可能的,还有其他方法,例如使用 JavaScript 或 AngularJS 吗?

【问题讨论】:

    标签: javascript html url iframe


    【解决方案1】:

    你需要做两件事。

    1. 在 iframe 上放置 name="foo" 属性。

    2. target="foo" 属性放在锚点上。然后,当您单击该链接时,它将针对 iframe 而不是整个页面。

    编辑:我没有正确理解该帖子,因此这是我的更新解决方案。

    $(document).ready(function ()
    {
        SetIframe();
    });
    

    这个函数会将所有个查询字符串解析为键值对。如果您有任何简单的变量(变量但不是值),那么您需要调整它,但这应该适用于您正在做的事情。获得变量值后,只需将其加载到 src 属性中,iframe 就会加载。我在 iframe 上放了一个 id,以便更容易定位。

    function SetIframe()
    {
        var query = window.location.search.substring(1);
        if (query.indexOf('page=') == -1)
            return;
    
        var vars = query.split('&');
        var kvp = [];
        for (var i = 0; i < vars.length; i++)
        {
            var pair = vars[i].split('=');            
            if(pair.length == 2)
                kvp[pair[0]] = pair[1];            
        }
        console.log(kvp);
    
        if (typeof kvp['page'] != 'undefined')
            $('#myFrame').attr('src', kvp['page']);
    
    }
    

    【讨论】:

    • 我明白,但我想做的是能够分发 url 而不是针对父页面,我希望能够发送带有嵌入的 url 属性的 url https://www.sitename.com/manual?page=xxx.htm页面。
    • xxx.htm 是 iframe 的 url 但 /manual 是父页面吗?
    • 正确。 https://www.sitename.com/manual 是我嵌入页面的页面。这是嵌入在