nciaer 发表于 2020-5-11 16:36:11

Discuz注册时邮箱填写处的一个bug

如果你在注册discuz的时候,邮箱那里是通过点击浏览器记录的邮箱地址,那么会有js错误产生,错误代码部分:if(obj.value.indexOf('@') != -1) {
        $('emailmore_menu').style.display = 'none'; // 提示emailmore_menu对象不存在,这个dom应该是下拉选择各种邮箱的界面,qq.com,163.com等等
        return;
}


同时不会检测邮箱是否合法登操作,dz官网有一个这个bug的描述贴子:https://www.dismall.com/thread-3972-1-1.html

贴子作者找到我,让我解决这个问题,我对js知之甚少,但是面对金钱的诱惑,我还是接下了这个单子。

代码主要是在register.js文件里,我看的一头雾水。一开始以为是点击浏览器邮箱地址出错是由于缺少了某个事件的执行,然后把哪些代码里用到的click,keyup,keydown,blur都自动执行,还是不行。

错误既然是emailmore_menu这个dom对象不存在,干脆在这个访问这个对象的方法(emailMenu)开头创建这个dom对象,代码是用dz里的:
if(!$('emailmore_menu')) {
        menu = document.createElement('div');
        menu.id = 'emailmore_menu';
        menu.style.display = 'none';
        menu.className = 'p_pop';
        menu.setAttribute('disautofocus', true);
        $('append_parent').appendChild(menu);
}

然后问题解决

最后感觉还是因为自动完成少执行了某个方法导致的,具体那里,不太清楚。






页: [1]
查看完整版本: Discuz注册时邮箱填写处的一个bug