You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击body打开新标签页后保持当前窗口焦点的实现求助

让新标签页后台打开并保留当前窗口焦点

我来帮你解决这个问题——点击页面body时打开新标签页,但不让焦点跳转到新窗口,这个需求可以通过调整window.open后的焦点控制逻辑实现。

默认情况下window.open()会自动把焦点切换到新打开的标签页,我们只需要在打开新窗口后,立刻让新窗口失焦,同时把焦点切回当前页面即可。

修改后的完整代码

先保留你原来的Cookie操作函数,然后更新redirectToTarget函数:

/**
 * For writing cookie
 * @param name {String} name of the cookie
 * @param value {*} value of the cookie
 * @param days {Number} number of days
 */
function setCookie(name,value,days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
/**
 * Get cookie by a name
 * @param name {String}
 * @returns {*}
 */
function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
/**
 * Check for already redirected or not. If not then redirect to targeted site.
 */
function redirectToTarget() {
    var isAlreadyRedirected = getCookie('redirect');
    if (null === isAlreadyRedirected) {
        setCookie('redirect', 1, 30); // write for 1 month
        // 打开新窗口后立刻切回当前页面焦点
        const newTab = window.open('https://www.google.com');
        if (newTab) {
            newTab.blur();
            window.focus();
        }
    }
}

关键注意点

  • 这个方案依赖blur()(让新窗口失焦)和focus()(让当前页面重获焦点)方法,Chrome、Firefox、Edge等主流现代浏览器都支持该操作
  • 必须确保操作是用户主动触发的(比如你的onclick事件),否则浏览器的弹窗拦截机制会阻止新窗口打开,同时焦点切换也不会生效
  • 少数浏览器可能因隐私设置或版本限制,不允许强制切换焦点,但常规用户交互场景下这个方案完全可行

调用方式不变

依然通过body的onclick事件触发:

<body onclick="redirectToTarget()">

内容的提问来源于stack exchange,提问作者Zakaria Shahed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:03:18