硬汉工作室

搜索
热搜: 活动 交友 discuz

[开发技术] Discuz注册时邮箱填写处的一个bug

[复制链接]
发表于 2020-5-11 16:36:11 | 显示全部楼层 |阅读模式
如果你在注册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);
}

然后问题解决

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






有关PHP系统、Discuz或网站等各种问题,可以联系QQ1069971363寻求付费支持
Discuz插件商店:http://addon.dismall.com/?@56030.developer
回复

使用道具 举报

QQ|Archiver|手机版|小黑屋|硬汉工作室 ( 冀ICP备13021567号-9 )

GMT+8, 2024-4-25 21:49 , Processed in 0.049166 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表