如何在父窗口中从弹出窗口打开URL

时间:2019-04-16 10:09:09

标签: javascript

我正在使用一个drupal模块,该模块允许我在弹出窗口中显示一些html代码,当然我可以包含一个javascript。要了解我在谈论哪种弹出窗口,只需访问模块页面here

该脚本允许我在倒计时结束后将用户重定向到外部URL地址example.com

只有一个小障碍:

example.com显示在弹出窗口内部,我希望在当前的浏览器选项卡中将其打开。

我尝试将window.location替换为window.open,但example.com根本无法显示。但是,在Chrome DevTools JavaScript控制台中,我看不到任何消息。

使用window.location.href仍在弹出窗口中打开页面

根本不显示使用window.opener.location example.com。这是控制台中的错误:

Uncaught TypeError: Cannot set property 'location' of null
    at countdown (splashify-splash:13)
    at <anonymous>:1:1

这是HTML代码:

<!-- Modify this according to your requirement -->
<h3>
  Redirecting to example.com after <span id="countdown">10</span> seconds
</h3>
<!-- JavaScript part -->
<script type="text/javascript">

    // Total seconds to wait
    var seconds = 10;

    function countdown() {
        seconds = seconds - 1;
        if (seconds < 0) {
            // Chnage your redirection link here
            window.location = "https://example.com";
        } else {
            // Update remaining seconds
            document.getElementById("countdown").innerHTML = seconds;
            // Count down using javascript
            window.setTimeout("countdown()", 1000);
        }
    }

    // Run countdown function
    countdown();

</script>

2 个答案:

答案 0 :(得分:0)

尝试使用 window.opener.location =“ example.com”;

这将在父窗口中打开URL。

答案 1 :(得分:0)

此模式组件似乎在iframe中显示内容,因此可以以该iframe的父对象或顶部窗口实例为目标来突破该问题:

parent.location.href = ...

top.location.href = ...

parent指iframe上方的窗口实例,top始终是最外面的窗口实例。如果只有一个“级别”的iframe正在进行,则在嵌套帧可能不同的情况下,两个对象都将指向同一对象。