Zapic
本帖最后由 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方法只能使用一次,用过就自毁:
  1. var __setEditorEvents = setEditorEvents;
  2. setEditorEvents= function(){
  3.     __setEditorEvents();
  4.     setEditorEvents=function(){};
  5. }
复制代码

不愧是我(

#3 迫 害 宝 座
@gamerteam 出来修Bug啦!泥潭已经一个月没有更新啦!








何了个兔
赶紧蹲一波大佬发锭

莉莉霍瓦特
说得好,但是你的建议没有打动我,让我为你转身


引据经典

Zapic
不修
反正到时候dz都要升级编辑器了

原 话 咕 咕