如何在不禁用所有 JavaScript 的情况下防止浏览器(JavaScript 和 CSS)禁用网页上的文本选择?

如何在不禁用所有 JavaScript 的情况下防止浏览器(JavaScript 和 CSS)禁用网页上的文本选择?

有些网站坚持要禁用页面上选择文本的功能,从而破坏可用性和可访问性。网站可以通过 CSS 或 JavaScript 来实现这一点(示例页面)。

有没有什么方法可以在 Firefox 中禁用此功能,以便用户无论网页如何尝试禁用它,始终都可以选择文本?

全局禁用 JavaScript 并不是解决方案,因为它会破坏许多网站。

答案1

首先,这是一个好问题——我也注意到了这一点,这让我非常恼火。

解决方案取决于网站如何禁用文本选择。正如您所写,这可以使用 CSS 或 JavaScript 来实现。

通过 CSS 禁用

该网站最有可能使用CSS 属性“用户选择”. user-select: none;将禁用文本选择。

要解决此问题,您必须更改网站使用的 CSS 样式。可以通过运行以下小 JavaScript 代码段来完成:

document.styleSheets[0].insertRule("* { user-select:text !important }", 1);

这将插入一个新的 CSS 规则,覆盖页面的“用户选择”设置。

运行此代码:将其粘贴到浏览器开发者工具的 JavaScript 控制台中(然后按 Enter 键),或者使用用户脚本管理器

通过 JavaScript 禁用

这可能比较棘手,因为有多种方法可以做到这一点。大多数方法都涉及为鼠标或选择事件注册事件处理程序,但有多种事件和多种注册方法,因此很难给出一般规则。

务实的解决方案可能是暂时禁用 JavaScript。

然而,如今我见过的大多数禁用选择的网站都是通过 CSS 来实现的。

答案2

为了避免在控制台中输入代码,您可以使用书签。在 URL 位置使用以下代码创建书签:

javascript:(function(){javascript:document.styleSheets[0].insertRule("* { user-select:text !important }", 1);})();

相关内容