学习百度UEeditor之domUtils.js
2012-11-29 20:52
323 查看
var domutils = { on:function(obj,type,handler){ if(obj.addEventListener){ obj.addEventListener(type,handler,false); } else if(obj.attachEvent){ if(!handler._d){ handler._d = {};//不用全局对象,就废了 } var key = type + handler.toString(); if(!handler._d[key]){//开始的时候写成handler[key],而 handler._d[key] = function(evt){ return handler.call(evt.srcElement,evt||window.event); } obj.attachEvent("on"+type,handler._d[key]); } }else{ obj["on"+type]=handler; } }, //为什么没去掉事件呢? un:function(obj,type,handler){ if(obj.removeEventListener){ obj.removeEventListener(type,handler,false); } else if(obj.detachEvent){ var key = type + handler.toString(); //alert(handler._d[key]) 而这里的取消事件时用的却是type,handler._d?handler._d[key]:handler,所以永远都是无能取消事件。 obj.detachEvent("on"+type,handler._d?handler._d[key]:handler); if(handler._d&&handler._d[key]){ delete handler._d[key]; } } else{//这里在百度里面没有,感觉加上能更好的兼容浏览器 obj["on"+type]=null; } } }
//--------------------------------------------------------Node的类型--------------------------------------------------------------------------------------
Node_Element:1
Node_attribute:2
Node_Text:3
Node_document:9
//--------------------------------------------------------inserAfter.js--------------------------------------------------------------------------------------
var insertAfter = function(node,nodeToInsert){ node.parentNode.insertBefore(nodeToInsert,node.nextSibling); }
这个函数已经掌握,但是这个是我接触的第一个重写dom方法的函数,因为这里充分利用了已有的dom方法来扩充自己的方法,没有就写一个嘛!
//--------------------------------------------------------setStyle.js--------------------------------------------------------------------------------------
// JavaScript Document var setStyle = function(element,name,value){//任何给定的style都可以重新改写 element.style[utils.cssStyleToDomStyle(name)] = value; } var setStyles = function(element,styles){//styles可以是数组或者json对象 for(var name in styles)[ if(styles.hasOwnProperty(name)){//只是重写了属于自身的样式。因为这里是层叠样式表,如font-family setStyle(element,name,styles[name]); } } }
这两个函数看起来一样,但是有很大的区别,这个正好注意到了层叠样式表,向百度前端致敬。
一个未解决的问题,大家谁知道答案希望能给我留言,多谢!
//--------------------------------------------------------removeClass--------------------------------------------------------------------------------------
var removeClass = function(element,classNames){ element.className = (' '+element.className+'').replace( new RegExp('(?:\\s+(?:' + classNames.join("|")+'))+\\s+','g'),' ');//搞不明白(?:这个三个连着写到底是什么意思,以后再说吧! }
相关文章推荐
- UEeditor之util.js 学习总结
- ArcGIS JS 学习笔记2 实现仿百度的拖拽画圆
- 百度IFE学习笔记(二)js 添加DOM子节点
- js之DOM学习
- JS学习1--基础、DOM控制Html元素、JS事件
- js基础学习第一天(关于DOM和BOM)一
- JS学习总结之Core DOM
- js与dom操作学习2
- [知了堂学习笔记]_JS的DOM基本操作
- ajax+js+dom+json+php+mysql实现仿百度、google的分页效果
- js学习笔记:DOM2和DOM3(放弃……)
- JS DOM编程艺术——显示文献来源链接表—— JS学习笔记2015-7-17(第86天)
- 百度IFE学习笔记(三)js获取页面内容及后续处理
- ArcGIS JS 学习笔记3 实现百度风格的BubblePopup
- 百度IFE学习笔记(一)js二维数组排序
- 百度IFE学习笔记(二)js 添加DOM子节点
- js-dom学习
- js学习笔记:DOM扩展
- D3.js学习笔记(一)——DOM上的数据绑定
- 轻松学习JavaScript十九:DOM编程学习之在HTML文档什么位置编写JS代码