前端开发您现在的位置是:首页 > 博客日志 > 前端开发

如何解除知识星球选择内容及复制限制

<a href='mailto:'>微wx笑</a>的头像微wx笑 2025-05-09前端开发11 0 0关键字: 知识星球  

如何解除知识星球选择内容及复制限制?注意,本文内容仅作为技术探讨学习!这里有一篇:解除知识星球复制限制(解决知识星球不能复制文本)https://blog.csdn.net/dzdzdzd12347/article

如何解除知识星球选择内容及复制限制?Gup无知


Gup无知

注意,本文内容仅作为技术探讨学习!Gup无知


Gup无知

这里有一篇:Gup无知


Gup无知

解除知识星球复制限制(解决知识星球不能复制文本)Gup无知


Gup无知

https://blog.csdn.net/dzdzdzd12347/article/details/126674619Gup无知


Gup无知

是一个 Tampermonkey 用户脚本,作用是解除知识星球网页上的文本复制限制,并对带有特定属性或类名的元素进行样式修改。Gup无知


Gup无知

这种实现方式同时跑三个计时器,不如监听copy事件的方式好;Gup无知


Gup无知

而且解除限制,复制的内容也要粘贴到Markdown编辑器才能更好的保留格式,但是还有一些HTML标签需要处理;Gup无知


Gup无知

个人觉得比较好的方式是通过Chrome扩展程序的方式实现这一功能,把所有的操作都封装在扩展程序中;Gup无知


Gup无知

1、通过注入CSS样式,解决不能选择内容的限制Gup无知

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//inject_zsxq.js
//知识星球
(function() {
    if (document.location.href.indexOf('https://wx.zsxq.com') === 0){
        // 创建一个 style 元素
        const style = document.createElement('style');
        // 设置 CSS 内容
        style.textContent = `
        .topic-container[_ngcontent-ng-c3736389963] .disabled-copy[_ngcontent-ng-c3736389963] {
            -webkit-user-select: auto !important;
            user-select: auto !important;
        }
        `;
        // 将 style 元素添加到 head 中
        document.head.appendChild(style);
    }
})();

2、通过监听oncopy事件,解决复制限制Gup无知


Gup无知

这里只提供一个思路Gup无知


Gup无知

关键点:addEventListener 的第三个参数Gup无知


Gup无知

document.addEventListener('copy', onCopy,true);Gup无知


Gup无知

详细实现Gup无知


Gup无知

略。。。Gup无知


Gup无知

document.addEventListener('copy', onCopy,true); Gup无知

document.addEventListener('copy', async () => {}); Gup无知

这两种方式的执行顺序有什么区别?Gup无知


Gup无知

在JavaScript里,事件监听器的执行顺序和事件流阶段、注册方式都有关系。就你给出的这两种监听copy事件的方式,它们的执行顺序差异如下:Gup无知

事件流阶段不同

  1. 捕获阶段触发的监听器Gup无知

1
document.addEventListener('copy', onCopy, true);

这行代码注册的监听器会在事件捕获阶段执行。事件捕获指的是事件从文档根节点开始,逐步向下传递到目标元素的过程。Gup无知

  1. 冒泡阶段触发的监听器Gup无知

1
document.addEventListener('copy', async () => {}, false); // 第三个参数默认是false

此监听器会在事件冒泡阶段执行。事件冒泡是事件从目标元素开始,向上传递到文档根节点的过程。Gup无知

执行顺序情况

  • 当同时存在捕获阶段和冒泡阶段的监听器时,事件会先进入捕获阶段。所以,document上捕获阶段的监听器(第三个参数为true)会比冒泡阶段的监听器先执行。Gup无知

  • 也就是说,在你的代码里,onCopy函数会比那个异步箭头函数更早执行。Gup无知

示例说明

下面的代码示例能帮助你更直观地理解:Gup无知

1
2
3
4
5
6
7
8
9
// 捕获阶段的监听器(先执行)
document.addEventListener('copy', () => {
  console.log('捕获阶段监听器执行');
}, true);
 
// 冒泡阶段的监听器(后执行)
document.addEventListener('copy', () => {
  console.log('冒泡阶段监听器执行');
});

当你触发复制操作时,控制台会先输出“捕获阶段监听器执行”,接着输出“冒泡阶段监听器执行”。Gup无知

总结

这两种监听方式的主要区别在于事件流阶段不同,而不是同步和异步的差异。捕获阶段的监听器会比冒泡阶段的监听器先执行。在实际开发中,你可以根据业务需求来选择使用捕获阶段还是冒泡阶段的监听器。Gup无知


Gup无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/front/2025-05-09/2067.html

很赞哦! (2) 有话说 (0)

相关文章

文章评论