day15

1-列举几个常见的浏览器兼容问题

节点兼容问题

//滚动距离
function getScrollOffset() {
    if (window.pageXOffset) {
        return {
            x: window.pageXOffset,
            y: window.pageYOffset
        }
    } else {
        return {
            x: document.body.scrollLeft + document.documentElement.scrollLeft,
            y: document.body.scrollTop + document.documentElement.scrollTop
        }
    }
}
function getViewportOffset() {
    if (window.innerWidth) {
        return {
            w: window.innerWidth,
            h: window.innerHeight
        }
    } else {
        if (document.compatMode == "BackCompt") {
            return {
                w: document.body.clientWidth,
                y: document.body.clientHeight
            }
        } else {
            return {
                w: document.documentElement.clientWidth,
                h: document.documentElement.clientHeight
            }
        }
    }
}
//获取属性 解决兼容问题
function getStyle(ele, prop) {
    // if (window.getComputedStyle) {
    //     return window.getComputedStyle(ele, null)[prop]
    // } else {
    //     return ele.currentStyle[prop]
    // }
    return window.getComputedStyle ? window.getComputedStyle(ele, null)[prop] : ele.currentStyle[prop]
}
//事件绑定 解决兼容问题
function addEvent(ele, type, handle) {
    if (ele.addEventListener) {
        ele.addEventListener(type, handle, false)
    } else if (ele.attachEvent) {
        //attachEvent中this指向 指向window
        ele.attachEvent(type, function() {
            //怕this指向问题 通过call改变一下
            handle.call(ele)
        })
    } else {
        ele["on" + type] = handle
    }
}
//解绑问题
function removeEvent(ele, type, fn) {
    if (ele.removeEventListener) {
        ele.removeEventListener(type, fn)
    } else if (ele.detachEvent) {
        ele.detachEvent("on" + type, function() {
            fn.bind(this, ele)
        })
    } else {
        ele["on" + type] = null
    }
}
2-js 中给元素注册事件的方法有哪些?
通过原始绑定 on+事件名
通过addEventlistener
通过attachEvent
3-js 中给元素的移除事件的方法
removeEventListener()
detachEvent()
on+事件名=null
4-阻止冒泡的方法
event.stopProgatation()
event.cancelBubble()
5-阻止默认行为的方法
event.preventDefault()
posted @ 2021-02-26 10:42  刘雨鑫  阅读(46)  评论(0)    收藏  举报