手机版

discuz表达式的JS抽取方法分析

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

本文描述了discuz表达式的JS提取方法。分享给大家参考,如下:

Discuz将应用的表情符号生成一个js文件,该文件在forumdata/cache/下被称为smilies_var.js。这个文件是根据后台数据库生成的表情数组。里面有两个数组,一个是表情名称和目录的smilies _ type,另一个是表情图片名称和代码的smilies _ array。这些都是在更新缓存时读取数据库生成的,所以后台

论坛快速回复的表达是一个弹出层。虽然很好,但还是会增加用户的操作复杂度。所以需要移出放在侧面,如下图:

既然论坛已经把JS文件中的表达式数据以数组的形式放进去了,要实现这个功能,其实就是一个操作数组的问题,然后简单的翻页,更改表达式,点击表达式在文本框中输出即可。那现在就分吧。从图中可以看出,表达部分分为3块,1。表达式类型(表达式名称),2。表达式列表,以及3。传呼。

看看smilies_var.js中的表达式类型数组

var smilies _ type=new Array();Smiles _ type [6]=['悠悠猴',' yxh '];Smiles _ type [5]=['Minsky ',' tsj '];Smiles _ type [4]=['蘑菇点',' mgd '];Smiles _ type [3]=['迟钝的人','格拉曼'];它实际上是一个二维数组。要执行图中所示的操作,您可以执行以下操作:

脚本类型=' text/JavaScript ' I=0;for(smilies _ type中的var a){ I;for(smilies _ type[a]中的var b){ if(b==0){ if(I==1){ document . write(' Li class=' fthis ' onclick=' ftab(this);loadsmilies(' a ',1,\ ' f \ ');'a href=' javascript:'smilies _ type[a][0]'/a/Li ');} else { document . write(' Li onclick=' ftab(this);loadsmilies(' a ',1,\ ' f \ ');'a href=' javascript:'smilies _ type[a][0]'/a/Li ');}} }}/script,可以先忽略ftab()和loadsmilies()函数,用变量I确认第一个表达式类型,从而将当前原理图添加到表示层。

其实表情图片的数组处理方法和类型是一样的,但可能是2维以上。具体处理程序如下:

脚本类型=' text/JavaScript ' function loads smiles(m,n,f){ var restr=' ';var restr=' div style=' width :300 px;' height:170px';for(smilies _ array[n]中的var a){ for(smilies _ array[n][a]中的var b){ if(b==2){ restr=restr ' img src=' images/smilies/' smilies _ type[1]'/' smilies _ array[n][a][b]' ' alt=' onclick=' document . getelementbyid(\ ' fast postmessage \ ')。value=document . getelementbyid(\ ' fastpposmessage \ ')。value \ ' ' smilies _ array[n][a][1]' \ ';'style=' cursor:pointer宽度:30 px;' height:30px'/';} } } restr=restr '/div div class=' fsmilies _ page ';var mnum=smilies_array。长度;for(var I=0;imnum-1;I){ var j=I ^ 1;restr=restr ' a href=\ ' JavaScript :\' onclick=\'loadsmilies(' m ',' j ',' f ');\ '[' j ']/a;} restr=restr '/div ';document.getElementById(f)。innerHTML=restr}/script还包括分页处理,即通过计算数组长度找到页数,然后循环输出,再调用loadsmilies()函数,传递参数,达到目标,每次点击都输出到指定的div,一切正常。初始化代码:脚本类型=' text/JavaScript' loadsmiles (6,1,' f ');/script,其中的第三个参数f是表达式的divID。

程序很简单,不多谈。

更多对JavaScript相关内容感兴趣的读者可以查看本网站的主题:《JavaScript图片操作技巧大全》、《JavaScript切换特效与技巧总结》、《JavaScript图形绘制技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、0103010。

希望本文对JavaScript编程有所帮助。

版权声明:discuz表达式的JS抽取方法分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。