设计模式知识连载(19)---外观模式:
来源:互联网 发布:软件企业认证 年限 编辑:程序博客网 时间:2024/05/17 01:11
<body><h3>设计模式知识连载(19)---外观模式:</h3><p> 外观模式:为一族复杂的子系统接口提供一个更高级的统一接口, 通过这个接口使得对子系统接口的访问更容易。</p><div id = 'myinput' style="border: 1px solid red">测试点击</div><br><hr><br><div id = 'box'></div><script type="text/javascript"> /** * 案例,方式一:初始 */ // //点击事件 // document.onclick = function (e) { // e.preventDefault() ; // if(e.target !== document.getElementById('myinput')) { // hidePageAlert() ; // } // } ; // function hidePageAlert(){ // // 隐藏提示框 // console.log('执行了hidePageAlert函数') ; // } ; /** * 案例,方式二:外观模式 */ // 外观模式实现 var addEvent = function(dom, type, fn) { // 对于支持DOM2级事件处理程序addEventListener方法的浏览器 if(dom.addEventListener){ dom.addEventListener(type, fn, false) ; // 对于不支持addEventListener方法但支持attachEvent方法的浏览器 }else if(dom.attachEvent) { dom.attachEvent('on' + type, fn) ; // 对于不支持addEventListener方法也不支持attachEvent方法, // 但支持on+'事件名'的浏览器 }else{ dom['on' + type] = fn ; } } ; // 获取事件对象 var getEvent = function(event) { // 标准浏览器返回event,IE返回window.event return event || window.event ; } ; // 获取元素 var getTarget = function(event) { var event = getEvent(event) ; // 标准浏览器下event.target,IE下event.srcElement return event.target || event.srcElement ; } ; // 阻止默认行为 var preventDefault = function(event) { var event = getEvent(event) ; // 标准浏览器 if(event.preventDefault) { event.preventDefault() ; // IE浏览器 }else{ event.returnValue = false ; } } // 测试用例: var myInput = document.getElementById('myinput') ; addEvent(myInput, 'click', function() { console.log('绑定的第一个事件') ; }) ; addEvent(myInput, 'click', function() { console.log('绑定的第二个事件') ; }) ; addEvent(myInput, 'click', function() { console.log('绑定的第三个事件') ; }) ; addEvent(document, 'click', function(e) { // 阻止默认行为 preventDefault(e) ; // 获取事件源目标对象 if(getTarget(e) !== myinput) { hidePageAlert() ; } }) ; function hidePageAlert(){ // 隐藏提示框 console.log('执行了hidePageAlert函数') ; } ; /****** * 小型代码库 * 【简约版属性样式方法库】 ******/ var GP = { // 通过id获取元素 g : function(id) { return document.getElementById(id) ; }, // 设置元素css属性 css : function(id, key, value) { this.g(id).style[key] = value ; }, // 设置元素的属性 attr : function(id, key, value) { this.g(id)[key] = value ; }, html : function(id, html) { this.g(id).innerHTML = html ; }, // 为元素绑定事件 on : function(id, type, fn){ this.g(id)['on' + type] = fn ; } } ; var box = GP.g('box') ; // 测试方法库 GP.css('box', 'background', 'red') ; GP.attr('box', 'className', 'box') ; GP.html('box', '这是通过方法库添加的内容') ; GP.on('box', 'click', function() { GP.css('box', 'width', '500px') ; }) ; box.className += ' box2' ; //在原来的基础上新增</script> </body>
阅读全文
0 0
- 设计模式知识连载(19)---外观模式:
- 设计模式知识连载(13)---简单工厂模式:
- 设计模式知识连载(14)---工厂方法模式:
- 设计模式知识连载(15)---抽象工厂模式:
- 设计模式知识连载(16)---建造者模式:
- 设计模式知识连载(17)---原型模式:
- 设计模式知识连载(18)---单例模式:
- 设计模式知识连载(20)---适配器模式:
- 设计模式知识连载(21)---代理模式:
- 设计模式知识连载(22)---装饰者模式:
- 设计模式知识连载(23)---桥接模式:
- 设计模式知识连载(24)---组合模式:
- 设计模式知识连载(25)---享元模式:
- 设计模式知识连载(26)---模板方法模式:
- 设计模式知识连载(27)---观察者模式:
- 设计模式知识连载(28)---状态模式:
- 设计模式知识连载(29)---策略模式:
- 设计模式(适配器模式,外观模式)
- sql优化
- CodeForces 893B Beautiful Divisors
- java用文件流实现查看下载次数
- 草堂君送书
- windows关机命令与tomcat的shutdown命令冲突解决方法
- 设计模式知识连载(19)---外观模式:
- 20171009_chr_validate Struts2输入校验
- leetcode_003
- Canal 使用入门
- 6位技术大咖11月倾心巨献,大数据+安全主题的技术分享合集【阿里云MVP 干货集锦】
- zookeeper安装和使用 windows环境
- c define定义
- ubuntu shell 编程学习
- Qt源码分析之QObject