1394 字
7 分钟
Linux 浏览器游玩云原神无法转向的 Pointer Lock 兼容性修复

Linux 浏览器游玩云原神无法转向的 Pointer Lock 兼容性修复#

现象与适用范围#

在部分 Linux 浏览器中打开云原神网页,进入游戏后鼠标点击和移动可能正常,但角色视角无法随鼠标转向。症状通常出现在网页请求 Pointer Lock 的“未调整移动”选项时:浏览器不支持或没有按网页预期实现该扩展选项,页面的兼容性处理又没有正确回退,后续控制鼠标的调用得到空值或无法继续。

Pointer Lock 用于让网页读取不受窗口边界限制的相对鼠标移动,因此很常见于第一人称或第三人称游戏。unadjustedMovement 试图请求未经过系统鼠标加速调整的移动数据;该选项和 Promise 返回形式在不同浏览器中的支持并不完全一致。MDN:requestPointerLock()

本文提供的是针对该网页兼容性路径的临时补丁:它会忽略网页传入的选项,改为调用浏览器已实现的无参数 Pointer Lock。它不修改游戏数据、不绕过登录或付费机制,也不能解决网络、账号、显卡渲染或输入设备本身的问题。

使用前检查#

先确保问题确实发生在浏览器网页端,而不是窗口没有获得焦点:重新进入游戏画面后点击 Canvas,再移动鼠标;若鼠标指针可以被锁定或隐藏,但画面完全不能转向,可尝试本补丁。

Pointer Lock 必须由用户交互触发,且页面需要处于活动状态。浏览器或站点更新后,问题可能自行消失;在确认原生行为恢复后,应停用脚本而不是永久保留补丁。

临时方案:浏览器控制台#

仅想快速验证时,可在云原神页面的开发者工具 Console 中粘贴以下代码,然后刷新页面并重新进入游戏:

const origin = HTMLElement.prototype.requestPointerLock;

HTMLElement.prototype.requestPointerLock = function () {
	return origin.call(this);
};

这段代码只对当前标签页、当前页面生命周期有效;刷新、关闭标签页或重新导航后会失效。不要在不信任的网站控制台粘贴来源不明的代码,浏览器对粘贴脚本的安全提示也不应绕过。

长期方案:Tampermonkey 脚本#

如果每次打开都需要修复,可新建一个 Tampermonkey 脚本,删除编辑器中的默认内容后粘贴以下完整版本并保存:

// ==UserScript==
// @name         Genshin Cloud Pointer Lock Compatibility Fix
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Work around an unsupported Pointer Lock option on the Genshin Cloud page.
// @match        https://ys.mihoyo.com/cloud/*
// @grant        none
// ==/UserScript==

(function () {
	"use strict";

	const origin = HTMLElement.prototype.requestPointerLock;

	HTMLElement.prototype.requestPointerLock = function () {
		return origin.call(this);
	};
})();

@match 限定为 https://ys.mihoyo.com/cloud/*,脚本不会在其他站点执行。保存后刷新云原神页面,再通过正常的点击操作进入游戏;不要试图由脚本在没有用户手势时主动请求 Pointer Lock。

补丁为什么有效#

原网页可能调用类似下面的代码,请求未调整的鼠标移动:

canvas.requestPointerLock({ unadjustedMovement: true });

补丁保存原始方法后覆盖 HTMLElement.prototype.requestPointerLock。覆盖函数不转发参数,等价于让调用落到浏览器已支持的:

canvas.requestPointerLock();

它保留原始函数的 this,因此实际请求仍由目标 Canvas 发起。代价是鼠标移动可能继续受操作系统加速影响;对于恢复可转向而言通常可以接受,但这不是“获得原始鼠标输入”的实现。

验证与排错#

保存脚本或执行控制台代码后,按以下顺序验证:

  1. 刷新云原神页面,确认 Tampermonkey 已为该地址启用脚本。
  2. 正常进入游戏并点击游戏画面,触发用户手势。
  3. 移动鼠标,确认角色视角可连续转向,且鼠标不会在窗口边缘停止。
  4. 按浏览器或游戏提供的退出方式解除指针锁定,再次进入游戏,确认能够重复工作。

仍然无效时,先在浏览器扩展管理页确认 Tampermonkey 有权在该站点运行,并临时停用其他会修改 Canvas、鼠标事件或隐私防护的脚本。若 Console 出现 pointerlockerror,可能是页面未获得焦点、缺少用户手势,或站点使用了限制 Pointer Lock 的 iframe;补丁本身无法绕过这些浏览器安全条件。

回滚与注意事项#

控制台方案只需刷新页面即可回滚。油猴方案则在 Tampermonkey 中关闭或删除该脚本后刷新页面。网页、浏览器或油猴扩展升级后,应先禁用脚本复测原生行为;若问题已经修复,继续覆盖原生 API 只会增加排查成本。

此外,脚本只忽略传给 requestPointerLock() 的参数。若云原神未来改为依赖 Promise 返回值、改用不同的输入 API,或改变页面地址,该补丁可能失效,需要依据浏览器控制台错误和页面行为重新判断,不应盲目扩大 @match 范围。

总结#

云原神网页端无法转向时,先将问题定位为 Pointer Lock 的兼容性差异,再用无参数调用验证回退路径。控制台代码适合快速确认,Tampermonkey 适合在问题持续时临时使用;一旦浏览器或站点的原生兼容性恢复,就应关闭补丁。

Linux 浏览器游玩云原神无法转向的 Pointer Lock 兼容性修复
https://hyperbola.cc/posts/tech/linux_desktop/linux浏览器云原神无法转向的pointer-lock兼容性修复/
作者
Hyperbola
发布于
2026-09-07
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取