![如何在不禁用所有 JavaScript 的情况下防止浏览器(JavaScript 和 CSS)禁用网页上的文本选择?](https://linux22.com/image/1619895/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E7%A6%81%E7%94%A8%E6%89%80%E6%9C%89%20JavaScript%20%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E9%98%B2%E6%AD%A2%E6%B5%8F%E8%A7%88%E5%99%A8%EF%BC%88JavaScript%20%E5%92%8C%20CSS%EF%BC%89%E7%A6%81%E7%94%A8%E7%BD%91%E9%A1%B5%E4%B8%8A%E7%9A%84%E6%96%87%E6%9C%AC%E9%80%89%E6%8B%A9%EF%BC%9F.png)
有些网站坚持要禁用页面上选择文本的功能,从而破坏可用性和可访问性。网站可以通过 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);})();