为一组接口提供一个一个的界面,或更高级的接口
或者说 将多个接口封装成一个接口,多用于兼容
这种设计模式在我们的代码中极其常见。现在终于知道它的术语名字了
很简单,直接上代码,扫一遍就知道干嘛用的了~
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
你这改法相当好呀,可以按这种改法完善其他浏览器内核的兼容问题~
想问下大神, el.addEventListener(ev, fn, false)如果option 为once,又该如何修改呢
比如在https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener 里有
outer .addEventListener('click', onceHandler, once);
outer .addEventListener('click', noneOnceHandler, noneOnce);
middle.addEventListener('click', captureHandler, capture);
middle.addEventListener('click', noneCaptureHandler, noneCapture);
inner1.addEventListener('click', passiveHandler, passive);
inner2.addEventListener('click', nonePassiveHandler, nonePassive);
你看这样如何,
var addMyEvent = function (option) {
let el=option.el,
ev=option.ev,
options=option.options;
if (el.addEventListener) {
el.addEventListener(ev,fn,!options?false:options)
} else if (el.attachEvent) {
el.attachEvent("on" + ev,fn)
} else {
el["on" + ev] = fn;
}
};
let option={
el:dom,
ev:event,
options:?
}
addMyEvent(option);
感谢大神回答
如果你看的是mozilla的话 那就要对应火狐了
浏览器内核不同 函数就会有微妙区别
我这么多个if就是为了判断内核 来确定具体用哪一种注册事件的函数
这是一种针对浏览器内核的兼容性写法
go神,我能问个问题,我看js里addEventListener的语法里面没有 if (el.addEventListener) {的方法,地址在https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener,希望您能帮我解答下,
而且直接使用您的的代码会抛异常的,调用方法如下
addMyEvent(document.getElementById("xx"),"click",function(){
alert(2);
})
世界之大,无奇不有哇
设计模式还有叫这个的...