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

如何在window.open打开的新窗口中执行JavaScript命令?

解决方案

首先,你的核心问题是没有保存新窗口的引用,导致后续操作都在当前页面执行,而非目标窗口。另外,chrome://这类浏览器内部链接受同源策略限制,普通网页的JavaScript无法直接操控,这点必须明确。

正确代码示例

<script>
function hi() {
    // 保存新窗口的引用,后续操作都基于这个变量
    const targetWindow = window.open("https://link_goes_here.com");

    // 等待窗口加载完成后执行操作,避免窗口未初始化就操作
    targetWindow.onload = function() {
        // 1. 刷新新窗口
        targetWindow.location.reload();

        // 2. 注意:普通网页无法跳转至chrome://链接,以下仅为语法示例
        // 只有在浏览器扩展、本地file://页面等特殊环境下才可能生效
        targetWindow.location.href = "chrome://settings";
    };

    // 如果需要打开另一个chrome://链接,同样受环境限制
    // const anotherChromeWin = window.open("chrome://extensions");
}
</script>

<button onclick="hi()">Click Me!</button>

关键要点说明

  • 保存窗口引用:window.open()会返回新窗口的对象实例,必须把它赋值给变量(比如targetWindow),后续所有针对新窗口的操作都要通过这个变量调用。
  • 等待窗口加载:使用onload事件确保新窗口完全加载后再执行操作,避免因窗口未初始化导致的错误。
  • chrome://链接限制:浏览器的安全策略禁止普通HTTP/HTTPS网页的JavaScript跳转或打开chrome://链接——这类操作仅在浏览器扩展程序、本地file://协议页面或Chrome开发者工具的特殊环境下才能生效。如果你的原代码是在这些环境中运行的,才能实现chrome://链接的跳转;如果是普通网页,这部分逻辑无法实现。

补充说明

如果你的原代码是Chrome扩展,需要在manifest.json中声明对应的权限(比如"chrome://settings/*"相关权限),并且扩展的内容脚本或后台脚本才能操控这类内部页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:22:21