解决Discuz编辑器在Chrome/Opera/Firefox下的使用问题
在Chrome中使用Discuz编辑器(Discuz6.0,Discuz6.1,Discuz7.0都存在这样的问题)的过程中可能遇到以下两个错误:
1.直接使用Discuz编辑器的所见即所得模式时:
Uncaught TypeError: Cannot call method ‘appendChild’ of /include/javascript/editor.js:129 undefined
2.将Discuz编辑器从代码模式切换到所见即所得模式时(无法切换):
Uncaught TypeError: Cannot call method ‘replace’ of /include/javascript/bbcode.js:387 undefined
第一个错误的出现在editor.js文件中的function setEditorStyle()函数中,解决办法是在
var headNode = editdoc.getElementsByTagName("head")[0];
headNode.appendChild(editcss);
中间加入:
if(!headNode){headNode = editdoc.getElementsByTagName("body")[0];}//by ZZR
第二个错误实际是出现在bbcode.js文件中的function bbcode2html(str)函数中,原因是Chrome、Firefox中对函数的处理有点不一样,函数的最后一个元素是push。解决办法是在:
re = new RegExp(addslashes(smilies[id]['code']), "g");
的前面加入:
if(isNaN(parseInt(id))) continue; //by ZZR
想偷懒的朋友,并且Discuz论坛版本为6.0的朋友可以直接下载www.zxlm.cn/fh/中对应的JS文件。
PS:BS一下Discuz的JS开发人员!
最后传一个第一个错误的效果图。