discuz将应用的表情生成了一个js文件,在forumdata/cache/下,叫smilies_var.js,这个文件是根据后台数据库生成的一个表情数组,里面有两个数组,一个是表情名称和所在目录的数组smilies_type,一个是表情图片名和代码的数组smilies_array,这些都是更新缓存的时候自己读数据库生成的,所以后台的改动一样会改动到它。

论坛快速回复的表情是一个弹出层,虽然已经很不错,但仍然会增加用户的操作复杂度,因此需要将它移出来,放在边上,就向下图:

既然论坛已经将表情的数据以数组的形式放在了JS文件里,那要实现这个功能,其实就是一个操作数组的问题了,再上一些简单的翻页,换表情,点击表情输出到文本框里就行了。那现在就在拆分一下,从图上就可以看出,表情部分一共分成了3块,1、表情种类(表情名称),2、表情列表,3、分页。

看看smilies_var.js里对表情种类的数组

var smilies_type = new Array();smilies_type[6] = ['悠嘻猴', 'yxh'];smilies_type[5] = ['免斯基', 'tsj'];smilies_type[4] = ['蘑菇点', 'mgd'];smilies_type[3] = ['呆呆男', 'grapeman'];

它其实就是一个2维数组,要像图上那样做,可以用两个循环搞定(这是比较笨的办法)<mce:script type="text/javascript"><!-- i=0; for(var a in smilies_type){ i++; for(var b in smilies_type[a]){ if(b==0){ if(i==1){ document.write("<li class='fthis' οnclick='ftab(this);loadsmilies("+a+",1,/"f/");'><a href="javascript:;" mce_href="javascript:;">"+smilies_type[a][0]+"</a></li>"); }else{ document.write("<li οnclick='ftab(this);loadsmilies("+a+",1,/"f/");'><a href="javascript:;" mce_href="javascript:;">"+smilies_type[a][0]+"</a></li>"); } } } } // --></mce:script>

其中的ftab()和loadsmilies()函数都先可以不管,i这个变量是用来确认第一个表情类型的,好给表现层加上当前示意。

表情图片的数组处理方式其实和类型是一样,只是可能不只2维了,具体的处理程序如下:<mce:script type="text/javascript"><!-- function loadsmilies (m,n,f) { var restr=''; var restr='<div style="width:300px;height:170px;">'; for(var a in smilies_array[n]){ for(var b in smilies_array­[n][a]){ if(b==2){ restr=restr+"<img src="data:images/smilies/"+smilies_type­[1]+"/"+smilies_array­[n][a][b]+"" mce_src="data:images/smilies/&quot;+smilies_type­[1]+&quot;/&quot;+smilies_array­[n][a][b]+&quot;" alt='' οnclick='document.getElementById(/"fastpostmessage/").value=document.getElementById(/"fastpostmessage/").value+/""+smilies_array[n][a][1]+"/";' style='cursor:pointer;width:30px;height:30px;' /> "; } } } restr=restr+"</div><div class='fsmilies_page'>"; var mnum=smilies_array­.length; for(var i=0;i<mnum-1;i++){ var j=i+1; restr=restr+"<a href="/" mce_href="/""javascript:;/" οnclick=/"loadsmilies("+m+","+j+",'f');/">["+j+"]</a> "; } restr=restr+"</div>"; document.getElementById(f).innerHTML=restr; } // --></mce:script>

这里面还包含了分页的处理,就是通过对数组求其长度来找到页数,然后循环输出,再调用loadsmilies()函数,传参,达到目的,每次点击都往指定的<div>里输出,一切就OK了。初始化代码:<script type='text/javascript'>loadsmilies(6,1,'f');</script>,里面的第三个参数f即为用于放表情的<div>ID。

将Discuz快速回帖的表情提取出来相关推荐

  1. markdown中快速插入Emoji表情包语法速查表!!!

    markdown中快速插入Emoji表情包语法速查表!!!

  2. 如何做gif动图表情包?轻松一键快速制作gif表情包

    当下的网络中少不了gif表情包的身影,通过一张动态的图片就能够表达出丰富的内容.接下来,就给大家讲一讲如何制作gif动图.只需要使用[GIF中文网]的gif制作(https://www.gif.cn/ ...

  3. GIF出处是哪,如何快速截取GIF表情包

    前一段时间整个网上都是王校长吃热狗的表情包,确实是够笑一段时间的了,像这样的表情包还有很多,比如韬韬的各种表情包,那GIF出处是哪,如何快速截取GIF表情包呢? 1.GIF出处可以是来自动画,也可以直 ...

  4. 1分钟快速生成用于网页内容提取的xslt

    2019独角兽企业重金招聘Python工程师标准>>> 1,项目背景 在<Python即时网络爬虫项目说明>一文我们说过要做一个通用的网络爬虫,而且能节省程序员大半的时间 ...

  5. 计算机中公式提取用什么函数,技巧:Excel快速从文本中提取单元格中的数字函数公式...

    有时,我们将一些文本导入Excel.这些文本包含中文,字母,数字,并且全部堆积在一个单元格中.但是,我们只需要数字.那么,如何快速从中文,字母和数字中提取数字呢?在这里,王小老师将为您分享一些实用的函 ...

  6. 自动化办公 | 快速从Excel中提取图片并匹配命名

    大家好,我是小五???? 关于自动化办公,之前我思考过好久.到底什么是自动化办公,哪些属于能真正提高我们工作效率的知识,哪些所谓的python自动化办公项目又是伪需求? 其实挺难断定的,可能大部分人用 ...

  7. 利用python进行身份证号码大全_2分钟就能学会的3个函数,快速从身份证中提取出生日期、年龄...

    做人力资源的小伙伴,经常要录入员工信息.今天考呀呀会计教育和大家分享,如何在员工身份证中,快速提取出生日期,自动生成年龄. 出生日期提取 在C2单元格输入公式=Mid(B2,7,8). Mid函数:用 ...

  8. Python快速从视频中提取视频帧(多线程)

    Python快速提取视频帧(多线程) 今天介绍一种从视频中抽取视频帧的方法,由于单线程抽取视频帧速度较慢,因此这里我们增加了多线程的方法. 1.抽取视频帧 抽取视频帧主要使用了 Opencv 模块. ...

  9. Excel如何快速从邮箱中提取QQ号码

    如下图B列单元格为QQ邮箱,现在想要快速从中提取出各QQ号码. ​ 在C2单元格输入公式=LEFT(B2,FIND("@",B2)-1) ​ 将C2单元格公式下拉到底即可完成 下面 ...

最新文章

  1. 题目11 数值的整数次方
  2. 浅析:精密空调能耗超高的原因!
  3. VC添加.chm帮助文档 --HtmlHelp
  4. javascript / DOM、BOM、document、window 区别和联系
  5. 什么是进程控制块,他有什么用?
  6. 一个月的java工作总结
  7. 二项分布期望和方差的公式推导
  8. Vue中变量前加...三个点什么意思
  9. knn代码实现+可视化
  10. Android WIFI列表搜索及无线热点的开启和关闭
  11. 动手学数据分析(四)- 数据可视化
  12. cocos2dx android工程接入联通Unipay sdk
  13. 微信小程序订阅消息报错 requestSubscribeMessage:fail can only be invoked by user TAP gesture.
  14. amr-nb linux 编译安装包,3GPP最新版本amr-nb编解码源代码
  15. 使用阿里云服务器安装微擎教程环境搭建
  16. Android12之OpenSL ES中IObject_GetInterface获取引擎接口(十五)
  17. ZIP压缩算法详细分析及解压实例解释
  18. 重新网格化Remesh
  19. 遮天 | 实战绕过卡巴斯基、Defender上线CS和MSF及动态命令执行...
  20. 基于Kinetis 60、HC-SR04超声测距模块的简易水情测量装置

热门文章

  1. 高压设备用Inconel 625镍基高温合金
  2. 无数曾经伟大的工作室和他们的经典作品都成为
  3. 【高级数据结构其一·并查集】
  4. flex布局兼容IE10
  5. 怎么提高计算机编程能力,提高程序员技能的11招编程技巧
  6. 使用kafka connect 实现从oracle到kafka的数据同步
  7. 社群运营:如何管理好一个社群?
  8. html标签label超出长度(文本溢出)时,不换行,而在最后边显示省略号
  9. 全球与中国环氧乙烷(ETO)灭菌设备市场深度研究分析报告
  10. htc g10刷机教程