本帖最后由 Zapic 于 2020-2-28 19:38 编辑 
其实...
刚刚我在策划怎么发锭...
然后就发现了这个Bug了.
#1 问题重现
由于习惯问题,编辑帖子时会来回切换纯文本模式和正常模式.
然后来回几次之后,刚刚想At人来领锭,后来直接蹦出来5个@.
exm?
然后我怀疑是我的脚本问题,直接把脚本关掉了.
然并卵.
然后我怀疑是我的浏览器问题,换成了IE.
然并卵.
然后我怀疑是我键盘的问题,换了块键盘.
然并卵.
然后我怀疑是我家闹鬼了,找了位热心世予.
世予: 我早就踩过这个坑了.
然后我就来这里发帖了.
然后,这是演示图:
IE11 on Windows 7:
 
 
Chrome 80 on Windows 7:
 
 
然后...
(别然后了!你找死啊!)
咳咳.
然...呸.
那么欢迎测试.
#2 导致问题的原因
我拿着DevTools删了半天监听器都没删干净,还在查,欢迎一起为论坛做贡献(
哈!
查到了,不愧是我.
哈↑哈↑哈↑哈↑
咳咳.
然后追查到底了,问题也水落石出了.
在调用setEditorEvents方法时,没有移除旧的监听器,导致编辑器上有多个监听器,而且是来回切换一次就多一个,导致一次按键触发多次extrafunc_atMenu方法,进而导致@符号超级加倍.
那问题很好解决啊,调用setEditorEvents时,把编辑器上旧的监听器移除掉,再进行接下来的操作就可以了.
结果发现睿智Discuz添加监听器时用的是匿名函数,没法移除(
既然他们睿智操作那我们也可以睿智操作,让setEditorEvents方法只能使用一次,用过就自毁:复制代码
不愧是我(
#3 迫 害 宝 座
@gamerteam 出来修Bug啦!泥潭已经一个月没有更新啦!
其实...
刚刚我在策划怎么发锭...
然后就发现了这个Bug了.
#1 问题重现
由于习惯问题,编辑帖子时会来回切换纯文本模式和正常模式.
然后来回几次之后,刚刚想At人来领锭,后来直接蹦出来5个@.
exm?
然后我怀疑是我的脚本问题,直接把脚本关掉了.
然并卵.
然后我怀疑是我的浏览器问题,换成了IE.
然并卵.
然后我怀疑是我键盘的问题,换了块键盘.
然并卵.
然后我怀疑是我家闹鬼了,找了位热心世予.
世予: 我早就踩过这个坑了.
然后我就来这里发帖了.
然后,这是演示图:
IE11 on Windows 7:
 
Chrome 80 on Windows 7:
 
然后...
(别然后了!你找死啊!)
咳咳.
然...呸.
那么欢迎测试.
#2 导致问题的原因
哈!
查到了,不愧是我.
哈↑哈↑哈↑哈↑
咳咳.
然后追查到底了,问题也水落石出了.
在调用setEditorEvents方法时,没有移除旧的监听器,导致编辑器上有多个监听器,而且是来回切换一次就多一个,导致一次按键触发多次extrafunc_atMenu方法,进而导致@符号超级加倍.
结果发现睿智Discuz添加监听器时用的是匿名函数,没法移除(
既然他们睿智操作那我们也可以睿智操作,让setEditorEvents方法只能使用一次,用过就自毁:
- var __setEditorEvents = setEditorEvents;
 
- setEditorEvents= function(){
 
-     __setEditorEvents();
 
-     setEditorEvents=function(){};
 
- }
不愧是我(
#3 迫 害 宝 座
@gamerteam 出来修Bug啦!泥潭已经一个月没有更新啦!
赶紧蹲一波大佬发锭
说得好,但是你的建议没有打动我,让我为你转身
引据经典