Skip to content

[BUG] 360 X 浏览器 安装脚本失败 #1816

Description

@CodFrm

提交前检查

  • 我已搜索过现有 issues,并确认这不是重复问题。
  • 在条件允许的情况下,我已尽量使用最新的 stable 或 beta 版本复现该问题,并确认问题仍然存在。
  • 我已确认这是 ScriptCat 本身的问题,而不是在 Tampermonkey 或 Violentmonkey 中可以正常运行的用户脚本兼容性问题。

问题描述

论坛用户反馈: https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=10409&page=1#pid104534

复现步骤

360 X 浏览器

ScriptCat 版本

v1.5.0

系统 / 浏览器及版本

windows 360 X 浏览器

相关脚本 / 日志 / 截图

No response

Activity

  1. added theissue type on Nov 2, 2026
  2. CodFrm commented on Nov 2, 2026

    @CodFrm
    MemberAuthor

    已在 Windows 实机复现,报错与论坛截图一致:

    安装页面加载失败
    Invalid context type provided.
    

    验证环境

    • 360 X:23.1.1298.64
    • Chromium:132.0.6805.0(通过 CDP 读取)
    • ScriptCat:v1.5.0 官方 Release 的 Chrome ZIP,未修改代码,以解压扩展方式加载
    • 独立浏览器配置,已开启开发者模式;开启后仍然复现

    复现与对照

    使用 https://scriptcat.org/zh-CN/script-show-page/1 的同一个 .user.js 地址:

    1. 在详情页点击「安装脚本」,新标签经过 DNR 重定向到 chrome-extension://<id>/src/install.html?url=...。
    2. 安装页报上述错误,无法加载安装内容。
    3. 在新标签页直接导航到同一个 .user.js 地址,安装页可以正常加载;已实际完成安装并读回脚本存储记录(测试脚本以禁用状态安装)。

    定位结果

    在失败页和正常页分别直接调用 API,结果如下。两者最终的安装页 URL 相同:

    API / 属性 网页按钮打开的失败页 直接导航打开的正常页
    chrome.storage.local.get() 报 Invalid context type provided. 正常
    typeof chrome.tabs undefined object
    typeof chrome.runtime.getContexts undefined function
    chrome.runtime.sendMessage() 仍可向本扩展后台发送消息 正常

    因此,本次错误实际发生在安装页读取扩展存储时,不是 runtime.getContexts() 的参数传错,也不是脚本内容解析失败。现象指向:360 X 在“网页新开标签 → DNR 重定向到扩展安装页”这条路径上,给页面提供了不完整的扩展 API 上下文。

    尚未确认浏览器内部为何这样分类,不能据此直接认定是某个具体的安全策略、进程隔离或 Chromium 内部缺陷。

    兼容方向的最小实测

    通过临时后台监听器验证,未修改扩展文件:

    • 刷新失败页:未解决。
    • 后台 chrome.tabs.update(sender.tab.id, { url: sender.url }) 同 URL 重新导航:未解决。
    • 失败页通过 runtime.sendMessage() 请求后台,再由后台 chrome.tabs.create({ url: sender.url }) 新建同一安装地址:安装界面正常加载,chrome.storage.local.get() 恢复正常,chrome.tabs 恢复为 object。

    可以考虑在安装页读取存储前识别这种异常上下文,由后台重新创建安装标签。正式实现时应校验同扩展发送者、主框架、精确安装页路径与标签身份,增加一次性恢复标记防止循环,并保留用户手动确认安装;正常浏览器无需走此兼容分支。

    以上只验证了恢复路径可行,尚未实现正式补丁,也未做跨浏览器回归。用户临时可复制脚本 .user.js 链接,在新标签页直接打开。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions