兼容低版本浏览器的一些方法

  • 页面滚动的兼容方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        body {
            height: 3000px;
        }
    </style>
</head>
<body>

</body>
</html>
<script>

    window.onscroll = function () {
        document.title = scroll().top;
    }

    /*正常浏览器(除了ie678之外的浏览器)
     window.pageYOffset
     已经声明DTD(标准模式)
     document.documentElement.scrollTop
     未声明 DTD(怪异模式)
     document.body.scrollTop*/

    //这个方法可以给调用者提供 页面被卷去的top值和left值
    function scroll() {
        if (window.pageYOffset != null) {
            return {
                "top": window.pageYOffset,
                "left": window.pageXOffset
            };
        } else if (document.compatMode == "CSS1Compat") {
            //说明是标准模式 有DTD
            return {
                "top": document.documentElement.scrollTop,
                "left": document.documentElement.scrollLeft
            };
        } else {
            return {
                "top": document.body.scrollTop,
                "left": document.body.scrollLeft
            };
        }
    }

</script>
  • 网页可视区client方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

</body>
</html>
<script>

    window.onresize = function () {
        document.title = client().width;
    }

    /*正常浏览器(包括IE9+)
     window.innerWidth
     标准模式(包括IE9-)
     document.documentElement.clientWidth
     怪异模式
     document.body.clientWidth*/

    //返回一个对象 如果用可视区的宽度 就.width 如果用高度就 .height
    function client() {
        if (window.innerWidth != null) {
            return {
                "width": window.innerWidth,
                "height": window.innerHeight
            }
        } else if (document.compatMode == "CSS1Compat") {
            //标准模式
            return {
                "width": document.documentElement.clientWidth,
                "height": document.documentElement.clientHeight
            }
        } else {
            return {
                "width": document.body.clientWidth,
                "height": document.body.clientHeight
            }
        }
    }

</script>
  • 兼容ie6、7、8获取鼠标的坐标方法

function (event) {
        var event = event || window.event;

        //event.clientX//相对于客户端的位置
        //event.pageX//相对于页面的位置
        //event.screenX//相对于屏幕的位置

        var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
        var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
    }
  • 阻止事件冒泡

var event = event || window.event;
        if (event && event.stopPropagation) {//短路表达式
            //说明是正常浏览器
            event.stopPropagation();
        } else {
        //兼容ie678
            event.cancelBubble = true;
        }
  • 事件目标兼容性 

  targetId(排除事件触发案例)

返回当前事件对象的id

火狐谷歌等 event.target.id

IE678      event.srcElement.id

 var targetId = event.target ? event.target.id : event.srcElement.id;
时间: 2024-11-18 21:07:05

兼容低版本浏览器的一些方法的相关文章

兼容低版本浏览器的getElementByClassName方法

/*兼容低版本浏览器的getElementByClassName方法*/ function getElementsByClassName(root,className){ if(root.getElementsByClassName){ return root.getElementsByClassName(className); }else{ var elements=root.getElementsByTagName(); var result=[]; for(var i=0,element;

a标签内容在div中垂直居中,不兼容低版本浏览器

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title></title></head> <style>.box{width:100px;height:200px;background:orange;border:2px solid #ccc;display: table;}.box a{dis

React+Webpack+ES6 兼容低版本浏览器(IE9)解决方案

虽然过了兼容IE6的噩梦时代,IE依旧阴魂不散,因为你可能还要兼容IE9.在ES6已经普及的今天,用ES6写react已经成了标配.但是babel编译的js语法,由于某些不规范的写法,可能在IE9下不能正确解释,很容易导致白屏.本文记录如下 起因 在准备提测的那天,顺便打开IE9看一眼(注意,这里是原生IE9 ,不是用IE11模拟的IE9),OMG! 排查后发现,原来是因为构造函数中使用了this.简写如下 class Child extends React.Component { ? cons

使用html5兼容低版本浏览器

因为html5 新出的一些语义化的标签,在低版本浏览器下不能识别,举个例子,比如你写了一个 header 标签中,写了一段文本,在低版本浏览器下,肯定是能看到的,但是,那是他是不认识 header标签的,只是展示的内容而已,如果你给header添加一个样式,肯定是不可以的,我们要解决的就是让低版本的浏览器认识并解析我们的html5标签. 别人的解决方法,我copy过来了,是自己经过测试的. 第一种方法: <!--[if lt IE 9]> <script src="http:/

兼容低版本ie的getByClass方法

ecma5为我们提供了实用的getElementsByClassName()方法;可惜这个方法在低版本ie下直接挂掉了. 在不依赖jq的前提下自己实现了一下方法, function getByClass(oParent,sClass){ if(oParent.getElementsByClassName){ //本除返回的是dom集合,类数组而非数组 return oParent.getElementsByClassName(sClass); } var result = []; var re

环形进度条(兼容低版本浏览器的方法)

jQuery + 图片 实现原理 这种方法相对来说就比较简单了,但是也是挺麻烦的一种. 首先,我们需要一个非常冗长的一个图片……图片的内容,就是每1°旋转角度,就是一张图片…100张… html <div class="progressbar"> <span>0</span>% </div> CSS .progressbar { text-align: center; line-height: 44px; width: 44px; dis

Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案

解决方式:安装 "babel-polyfill" 即可. 命令:npm install --save-dev babel-polyfill 在入口main.js文件引入:import 'babel-polyfill' 最后一步,在build文件夹下找到webpack.base.conf.js.修改入口方式: entry: {app: ["babel-polyfill", "./src/main.js"]} 最后,再依赖一个插件解决ES6/ES7高

针对ie8等低版本浏览器document.getElementsByName方法不生效解决方法

function getByName(Name){ var i = document.getElementsByName(Name); if(i>0){ return i; }else{ var aele = document.getElementsByTagName('*'); var arr = []; for (var i = 0;i<aele.length;i++){ if(aele[i].getAttribute("name")==Name){ arr.push(

AngularJS开发指南7:AngularJS本地化,国际化,以及兼容IE低版本浏览器

AngularJS本地化,国际化 国际化,简写为i18n,指的是使产品快速适应不同语言和文化. 本地化,简称l10n,是指使产品在特定文化和语言市场中可用. 对开发者来说,国际化一个应用意味着将所有的文字和其他因地区而异的数据从应用中抽离出来. 本地化意味着为这些抽离的数据和文字提供翻译和转变成本地的格式. 目前,AngularJS支持日期,数字和货币的国际化和本地化. 另外,AngularJS还通过ngPluralize指令支持本地多元化. 所有的AngularJS本地化组件都依赖于$loca