我正在使用一个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>
答案 0 :(得分:0)
尝试使用 window.opener.location =“ example.com”;
这将在父窗口中打开URL。
答案 1 :(得分:0)
此模式组件似乎在iframe中显示内容,因此可以以该iframe的父对象或顶部窗口实例为目标来突破该问题:
parent.location.href = ...
或
top.location.href = ...
parent
指iframe上方的窗口实例,top
始终是最外面的窗口实例。如果只有一个“级别”的iframe正在进行,则在嵌套帧可能不同的情况下,两个对象都将指向同一对象。