网页看板娘 js版(论坛娘、博客娘。总之就是梦娘 V (-1) 代码
/** * ukagaka.js * @author Star */ if(typeof(Kangbang) == 'undefined') var Kangbang = {}; var Ukagaka = null; Kangbang.ukagaka = function(){ this.msgList = []; //可用的消息列表 this.shellList = [];//可用的shell列表 this.msgIndex = 0; //当前消息索引 this.shellIndex = 0;//当前shell索引 this.ghostName = "";//当前人格名称 this.msgBox = ""; // 语言输出位置,默认为div this.shell = ""; // 默认的ukagaka图像显示位置,默认为img元素 this.config = ""; // ukagaka的配置信息,使用 HashTable初始化 this.somagicShell = ""; this.somagicMsg = ""; this.somagicMsgBox = ""; this.timer = null; this.timerFlag = false; };
Kangbang.ukagaka.prototype = {
setGhostName : function( name){this.ghostName = name; }, getGhostName : function(){ return this.ghostName; }, setMsgList : function(msgs){ this.msgList = msgs; }, setShellList : function(shells){ this.shellList = shells; }, setShell : function(img){this.shell = img; }, setMsgBox : function(div){this.msgBox = div; }, setSomagicShell : function(div){ this.somagicShell = div; }, setSomagicMsgBox : function(div){ this.somagicMsgBox = div; }, // 整个对话框 setSomagicMsg : function(div){ this.somagicMsg = div; }, //显示对话的部分 getConfig : function(){ return this.config; },
hiddenSomagicMsgBox : function(){ Kit.hidden(this.somagicMsgBox);}, showSomagicMsgBox : function(){Kit.show(this.somagicMsgBox); this.showSomagic();}, hiddenSomagic : function(){ Kit.hidden(this.somagicShell); /*this.hiddenSomagicMsgBox()*/}, showSomagic : function(){Kit.show(this.somagicShell);}, stopTimer : function(){ if(this.timer ==null) return ;this.timerFlag = false;clearTimeout(this.timer)},
setConfig : function(cfg){ // 后台取得服务器配置文件之后调用 this.config = cfg; this.shellList = cfg.get("#shell").split(","); this.msgList = cfg.get("#msg").split("\\w"); this.ghostName = cfg.get("#ghost"); this.createCode(); }, createCode : function(){ // 动态创建js属性或方法 var codes = this.config.get("#jsCode").split("\[code\]"); for (var i = 0; i < codes.length; i++) { //alert(codes[i]); eval(codes[i]); }
}, init : function(){ //前台页面加载完成后调用,sonotori,前台个很据自己情况手动控制 //this.showMenu();// this.hello = function(){// alert("Hello!");// }; }, showMenu : function(){ // 显示系统菜单,显示位置为对话框 //alert(this.config.get("#menu")); this.stopTimer(); this.msgBox.innerHTML = this.config.get("#menu"); }, sayNext : function(){ //简单的按照顺序显示下一列对话。 用于自我吐槽 if(this.msgIndex >= this.msgList.length) this.msgIndex = 0; this.msgBox.innerHTML = this.msgList[this.msgIndex ++].split("\\c")[0]; Kit.element("outPutDialog").innerHTML = this.msgBox.innerHTML + "<br/>"; }, sayToIndex : function(index){ // 控制吐槽顺序 if(index > this.msgList.length) index = this.msgList.length; if(index < 0) index = 0; this.msgBox.innerHTML = this.msgList[index].split("\\s")[0]; },
shellNext : function(){ // 按照外壳顺序切换外形 if(this.shellIndex >= this.shellList.length) this.shellIndex = 0; this.shell.src = this.shellList[this.shellIndex ++]; }, shellToIndex : function(index){ //控制外壳显示顺序 if(index > this.shellList.length) index = this.shellList.length; if(index < 0) index = 0; this.shell.src = this.shellList[index]; }, shellOnce : function(index /* */ , time /* */){ //控制显示顺序并在time之后恢复默认 this.shellToIndex(index); setTimeout(function(){Ukagaka.shellToIndex(0);} , time); }, tsukkomi : function(){ //自己吐 if(this.msgList.length <= 0) return; this.sayNext(); this.timer = setTimeout(function(){Ukagaka.tsukkomi();} , 10 * 1000); }, tsukkomiSomagic : function(){ // 一起吐 if(this.msgList.length <= 0) return; if(this.msgIndex >= this.msgList.length) this.msgIndex = 0; this.timer = setTimeout(function(){Ukagaka.tsukkomiSomagic();} , 10 * 1000); var arr = this.msgList[this.msgIndex ++ ].split("\\c"); this.msgBox.innerHTML = arr[0]; this.somagicMsg.innerHTML = arr[1]; } };(function(){ Ukagaka = new Kangbang.ukagaka(); var ajax = new Ajax(); var hashMap = new Kit.HashTable(); // 从服务器上读取配置文件,这样应该就牛13了,完全独立出来了 var response = ajax.getServerRequest("http://127.0.0.1:8000/ukagaka/cfg/ukagak.cfg").split("[end]"); for(var line in response){ //这个设计我表示无语,循环所得的是下标 var arr = response[line].split("=");// if(arr.length <= 0) continue; var value = ""; for(var i = 1 ; i < arr.length ; i ++){ value += arr[i] + (i < arr.length - 1 ? "=" : ""); } hashMap.put(arr[0].replace("\r\n" , "") , value); } Ukagaka.setConfig(hashMap);})();
/** * Toolkit.js * three object canuse * @author Star */
if(typeof(Kit) == 'undefined') var Kit = {}; Kit.element = function(elementId){ return document.getElementById(elementId); }; Kit.isElement = function(elementId){ return typeof(elementId) == "object"; } Kit.hidden = function(elementId){ if (Kit.isElement(elementId)) { elementId.style.display = "none"; }else { Kit.element(elementId).style.display = "none"; } }; Kit.show = function(elementId){ if (Kit.isElement(elementId)) { elementId.style.display = ""; }else { Kit.element(elementId).style.display = ""; } }; Kit.isShow = function(elementId){ return Kit.isElement(elementId) ? elementId.style.display.toLowerCase()!= "none" : Kit.element(elementId).style.display.toLowerCase() != "none" ; }; Kit.HashTable = function(){ this.keys = []; this.values = []; }; Kit.HashTable.prototype = /*(function()*/{// return { getLength : function(){ return this.keys.length; },
clear : function(){ this.keys = [];this.values = []; },
keys : function(){ return this.keys; },
values : function(){ return this.values; }, /** * * @param {Object} key * @param {Object} value */ put : function(key , value){ if(this.containsKey(key)) return false; this.keys.push(key); this.values.push(value); return true; }, /** * * @param {Object} key * @param {Object} value */ set : function(key , value){ for(var i = 0 ; i < this.getLength() ; i ++){ if (this.keys[i] == key) { this.values[i] = value; return true; } } return false; }, /** * * @param {Object} key */ get : function(key){ for(var i = 0 ; i < this.getLength() ; i ++){ if(this.keys[i] == key) return this.values[i]; } return null; }, /** * * @param {Object} key */ remove : function(key){ for(var i = 0 ; i < this.getLength() ; i ++){ if(this.keys[i] == key){ this.keys.removeIndex(i); this.values.removeIndex(i); return; } } }, /** * * @param {Object} key * */ containsKey : function(key){ for(var i = 0 ; i < this.getLength() ; i ++){ if(this.keys[i] == key) return true; } return false; }, /** * * @param {Object} value */ containsValue : function(value){ for(var i = 0 ; i < this.getLength() ; i ++){ if(this.values[i] == value) return true; } return false; } // } };//)(); Kit.Time = { onTime : function(fn ,time){ setTimeout(fn , time); } }; if(typeof(Browser) == 'undefined') var Browser = {};
Browser.Layout = {};
Browser.Type = { /** * borwer type main type like ie or firefox and so on */ borwerType : " ", /** * quick know the borwer type */ isIE : function(){ return Browser.Type.borwerType.toLowerCase() == "ie" ? true : false; } , /** * borwer version list */ borwerVersion : "",
agentString : "" };
/** * Oh my god , the method is great but I think It`s error . * If the brow is not 'IE 6' the method id bad so the method only to * use 'IE 6' to support position fixd attribute but FireFox or Op..... * so you can use css file ? js file can use to load css file but please * not use js to create css , It`s so hard to read. */ Browser.Layout.FixedPosition = { inited : false, /** * * @param {Object} element * @param {Object} top * @param {Object} left */ setPosition : function(element, top, left){ element.style.display = "block"; if (Browser.Type.isIE()) { element.style.position = "absolute"; Browser.Layout.FixedPosition.setGlobal(); }else { element.style.position = "fixed"; } element.style.top = top + "px"; element.style.left = left + "px"; }, /** * add css attribute key and value to document * @param {Object} key * @param {Object} value */ addCSSRule : function(key, value){ var css = document.styleSheets[document.styleSheets.length - 1]; css.cssRules ? (css.insertRule(key + "{" + value + "}", css.cssRules.length)) : (css.addRule(key, value)); }, /** * */ setGlobal : function(){ if (!Browser.Layout.FixedPosition.inited) { document.body.style.height = "100%"; document.body.style.overflow = "auto"; Browser.Layout.FixedPosition.addCSSRule("*html", "overflow-x:auto;overflow-y:hidden;"); Browser.Layout.FixedPosition.inited = true; } } }; /** * init var on page load */ (function(){ Browser.Type.agentString = navigator.userAgent; var bowerStr = Browser.Type.agentString.toLowerCase(); if(bowerStr.indexOf("msie") > -1){ Browser.Type.borwerType = "ie"; if(bowerStr.indexOf("msie 6") > -1){ Browser.Type.borwerVersion = "IE 6"; }else if(bowerStr.indexOf("msie 7") > -1){ Browser.Type.borwerVersion = "IE 7"; }else{ Browser.Type.borwerVersion = "nani"; } }else{ Browser.Type.borwerType = "FireFox"; } })();
if(typeof(Ajax) == 'undefined') var Ajax = function(){ this.request = null; }; Ajax.prototype = {
createRequest : function(){ var request = false; var ms = ['Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP']; if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else if(window.ActiveXObject){ for(var i = 0 ; i < ms.length ; i ++ ){ try{ request = new ActiveXObject(ms[i]); return request; }catch(e){ continue; } } } return false; },
getServerRequest : function(url){ this.request = this.createRequest(); this.request.open("get" , url ,false);// if(this.request.overrideMimeType)// this.request.overrideMimeType('text/json; charset=utf-8'); this.request.setRequestHeader("cache-control","no-cache"); this.request.setRequestHeader('Accept-Charset','utf-8'); this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); this.request.send(); if(this.request.readyState==4&&this.request.status==200) return this.request.responseText; else return ""; } };
body{ font-family:"Lucida Grande",Arial,Helvetica,Verdana,sans-serif; font-size:12px; line-height:150%;} /** * 整个工程的最外层 */#mp_kobato{ margin:0; padding:0;}/** * 内层,包含看板和看板整体的控制选项 */#kanggang_shell{ bottom:0; display:block; float:right; font-size:12px; margin:0 20px 0 0; padding:0; position:fixed; right:0; z-index:501;}/** * 看板娘实体,其中包含看板娘和对话框 */#kobato{
float:right; padding-right:10px; position:relative;}#somagic{ top : 140px; float:right; padding-right:250px; position:relative;}/** * padding top right buttom left */#somagic_msgBox{ position:absolute; float:left; padding:5px 5px 10px 0; top : -10px; left :80px; width : 230px; height : 60px; background-color:#808080; background : transparent url("/imgs/somagciballoon.png" ) no-repeat scroll right top;}#somagic_msg{ margin : 0 10px 10px 20px ; color : #FFFFFF;}/** * 看板的控制选项 */#kobato_dock{ background-color:#FFFFFF; float:right; padding:5px 10px; text-align:center; -moz-border-radius-topleft:8px; -moz-border-radius-topright:8px;
}/** * color:#FFFFFF; */#kobato_msgBox{
margin:0; padding:10px 20px; left:-320px; height : 100px; position:absolute; top:5px; height : 90px; width:295px; background : transparent url("/imgs/balloon.png" ) no-repeat scroll right top;
}#kobato_msgBox #menu{ margin:0; top : -5px; right : 20px; position:absolute; cursor : pointer;}/** * background-color:#808080; * border-style:solid solid none; * -moz-border-radius:5px 5px 5px 5px; * cursor : pointer; */#kobato_msg{
color:#FFFFFF; margin:0; padding:0;
}#kobato_msg ul{ margin:0; padding:0; list-style:none outside none;}#kobato_msg li{ float:left; width:33%;}#kobato_msg a{ cursor : pointer;}
<div id="mp_kobato"> <div id="kanggang_shell"> <div id="kobato"> <div id="kobato_msgBox"> <div id="menu" onclick="Ukagaka.showMenu();"><img src="imgs/menu.gif"/></div> <div id="kobato_msg" >欢迎光临</div> </div> <div id="kobato_bg" onclick="Ukagaka.shellNext();" > <img id="kobato_shell" src="imgs/1.gif" title="kobato" width="200px" height="242px"/> </div> </div> <div id="somagic" > <div id="somagic_msgBox"> <div id="somagic_msg">tobato</div> </div><!--style="display:none;"--> <div id="somagic_bg" > <img id="somagic_shell" src="imgs/7.gif" width="90px" height="100px"/> </div> </div> <div id="kobato_dock"></div> </div> </div> <script language="JavaScript" type="text/javascript" > (function(){ Ukagaka.setShell(Kit.element("kobato_shell")); Ukagaka.setMsgBox(Kit.element("kobato_msg")); Ukagaka.setSomagicShell(Kit.element("somagic")); Ukagaka.setSomagicMsgBox(Kit.element("somagic_msgBox")); Ukagaka.setSomagicMsg(Kit.element("somagic_msg")); Ukagaka.init();
Ukagaka.tsukkomiSomagic(); })(); </script>
没想到这里也很不方便,总之解释先放hi了,看情况再写一个完整的解释。
http://hi.baidu.com/starsecond/blog/item/c3c63bf5d16399e37709d724.html
简单的解释想放在这里了。
网页看板娘 js版(论坛娘、博客娘。总之就是梦娘 V (-1) 代码相关推荐
- 学习Qt的资源-网站、论坛、博客等
来自<零基础学Qt 4编程>一书的附录 附录C Qt资源 C.1 Qt 官方资源 全球各大公司以及独立开发人员每天都在加入 Qt 的开发社区.他们已经认识到了Qt 的架构本身便可加快应用程 ...
- 门户、论坛、博客、SNS,网站模式的辨析
门户.论坛.博客.SNS,网站模式的辨析 门户,是互联网原始拓荒期的产物.它简单直接地把人们需要上网的东西,一股脑全放到了网上.内容太多怎么办?没关系,表格布局,每个主题一个豆腐块. 互联网普及之后, ...
- springboot基于vue.js的掌上博客系统的设计与实现毕业设计源码063131
Springboot掌上博客系统的设计与实现 摘 要 掌上博客系统是当今网络的热点,博客技术的出现使得每个人可以零成本.零维护地创建自己的网络媒体,Blog站点所形成的网状结构促成了不同于以往社区的B ...
- (附源码)springboot基于vue.js的掌上博客系统的设计与实现 毕业设计 063131
Springboot掌上博客系统的设计与实现 摘 要 掌上博客系统是当今网络的热点,博客技术的出现使得每个人可以零成本.零维护地创建自己的网络媒体,Blog站点所形成的网状结构促成了不同于以往社区的B ...
- 基于LAMP架构搭建BBS论坛或者博客
搭建 一.项目简介 二.环境准备 1.需要准备的软件包 2.安装前环境准备 3.编译方式 (讲究顺序) 三.编译安装MySQL 四.编译安装Apache 1.安装依赖包apr 2.安装httpd软件 ...
- 点石互动--Zac 之:英文SEO论坛和博客推荐
点石互动 Zac 发表于 11月 24, 2006 早就有读者建议我把平常经常看的英文SEO论坛和博客列出来给大家参考,一直老忘了写,今天给大家列出Zac SEO精选推荐.:-) SEO论坛 站长世 ...
- 用Node.JS+MongoDB搭建个人博客(成品展示)
在博客里可以随意畅写和分享自己喜欢的技术,和网友分享知识也是一种提升.根据自己所发表的博客也能更加加深印象. 与此同时写博客也可以提高自己的写作能力(虽然不咋地),但我相信博客只会越写越有质量的. 个 ...
- iPhone开发网站、论坛和博客
整理了一下手中的iPhone开发网站.论坛和博客,精选了这10个常去的网站.其中有2篇教学文章,由于非常经典,于是单列出来,与其网站并列. 建议新入行的朋友在看教学文章的同时多上论坛,与大家交流,偶尔 ...
- 10个iPhone开发网站、论坛、博客
整理了一下手中的iPhone开发网站.论坛和博客,精选了这10个常去的网站.其中有2篇教学文章,由于非常经典,于是单列出来,与其网站并列. 建议新入行的朋友在看教学文章的同时多上论坛,与大家交流,偶尔 ...
最新文章
- php-echo原理
- vb.net 功能f8键事件_笔记本电脑功能键介绍
- python移动文件中某个内容_如果python中的某些文件类型,则移动文件并创建目录...
- AntV中的饼状图中的花瓣图中的ToolTip怎样修改
- Python常用正则表达式总结
- 深入浅出之数据格式转换
- Erlang OTP学习(3) supervisor
- java 18.9_Oracle: Java 11 (18.9 LTS) 正式上线!
- C++中的两个知识点
- C++基础::构造函数
- 推荐系统:NDCG评价指标
- 网件 无线打印机服务器,如何设置打印机实现网件Air print功能
- PostgreSQL文本搜索(七)——自定义配置
- Pr 入门教程:如何更改素材属性?
- model trainning 模型训练
- ZCMU--5238: 向右转(C语言)
- python休假管理_Python 假期自学小结 其六
- 华为实验18-OSPF区域认证
- windows被迫重装系统| 数据恢复 | 启动盘 PE盘 | 批量软件安装
- Linux 网络编程学习笔记——二、IP 协议详解
热门文章
- 【Java编程的逻辑】编程基础
- Redis 集群配置
- GitLab删除项目的操作步骤
- 荣之学:传统国际国代和跨境电商物流不同之处有哪些?
- XAI之SHAP:SHAP算法(How—每个特征如何重要/解释单个样本的预测)的简介(背景/思想/作用/原理/核心技术点/优缺点)、常用工具库、应用案例之详细攻略
- mysql错误代码1045的原因及解决方案
- Oracle 各类连接超时相关参数学习
- 新媒体培训的目的和意义体现
- EI会议:移动互联网、云计算和信息安全国际学术会议(MICCIS 2023)
- schema mysql建立_创建数据库时使用schema