全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

谈谈JavaScript中浏览器兼容问题的写法小议

前言

JavaScript中很多坑,其中对浏览器的兼容也是一个问题,本文就简略的归纳了部分针对浏览器兼容问题的写法的例子,旨在便于查找。如果读者有什么好的意见建议,请留言交流,谢谢!

window窗口大小

1.在IE9+、Chrome、Firefox、Opera以及Safari中

window.innerHeight获取浏览器窗口的内部高度

window.innerWidth获取浏览器窗口的内部宽度

var msg = "窗口宽度:" + window.innerHeight + "\n窗口高度:" + window.innerWidth;
alert(msg );

2.在IE5/6/7/8(Chrome和Firefox也支持)

document.documentElement.clientHeight

document.documentElement.clientWidth

var msg = "窗口宽度:" + document.documentElement.clientWidth + "\n窗口高度:" + document.documentElement.clientHeight;
alert(msg);

3.兼容写法(可以涵盖所有的浏览器)

就是把前两者的写法相 “或”。

var w = window.innerWidth || document.documentElement.clientWidth;
var h = window.innerHeight || document.documentElement.clientHeight;
alert("窗口宽度:" + w + "\n窗口高度:" + h);

获取内部样式表和外部样式表

1.对IE浏览器:对象.currentStyle[“属性名”]

2.其他浏览器:window.getComputedStyle(对象, null)[“属性名”]

注意:内部样式表中的属性和外部样式表中的属性只能获取不能修改。如果想修改需要通过行间样式表修改,行间样式表的优先级最高,会覆盖内部样式表和外部样式表。

为了简化书写和兼容浏览器,一般封装一个方法。如下列。

<body>
  <div id="box1"></div>
  <script type="text/javascript">
    var box1 = document.getElementById("box1");
    // alert(box1.currentStyle["width"]); //只支持IE浏览器
    // alert(window.getComputedStyle(box1, null)["height"]); //支持浏览器外的其他浏览器
    alert(getStyle(box1, "backgroundColor"));
    /*
      为了简化书写和兼容浏览器,一般封装一个方法出来
    */
    function getStyle (obj, attributeName) {  
      if(obj.currentStyle){  //如果存在对象,则是在ie浏览器
        return obj.currentStyle[attributeName];
      }else { //其他浏览器
        return window.getComputedStyle(obj, null)[attributeName];
      }
    }
  </script>
</body>

onscroll事件

<script type="text/javascript">
   window.onscroll = function () {
    console.log("开始滚动...");
    //跨浏览器获得滚动的距离
    console.log(document.documentElement.scrollTop | document.body.scrollTop);
  }
</script>

事件对象

box.onclick = function(event) {
      event = event || window.event;
      console.log("offsetX:" + event.offsetX + " offsetY:" + event.offsetY);
      console.log("screenX:" + event.screenX + " screenY:" + event.screenY);
      console.log("clientX:" + event.clientX + " clientY:" + event.clientY);
      console.log("pageX:" + event.pageX + " pageY: " + event.pageY);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# javascript浏览器兼容  # javascript兼容性问题  # Javascript 多浏览器兼容性问题及解决方案  # 文本框中  # 回车键触发事件的js代码[多浏览器兼容]  # js 获取屏幕各种宽高的方法(浏览器兼容)  # 兼容多浏览器的JS 浮动广告[推荐]  # 多浏览器兼容性比较好的复制到剪贴板的js代码  # JS网页播放声音实现代码兼容各种浏览器  # 兼容主流浏览器的JS复制内容到剪贴板  # javascript获取设置div的高度和宽度兼容任何浏览器  # js获取键盘按键响应事件(兼容各浏览器)  # 解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题  # js操作iframe兼容各种主流浏览器示例代码  # 取得窗口大小 兼容所有浏览器的js代码  # 样式表  # 行间  # 法相  # 有什么  # 则是  # 一个问题  # 中对  # 大家多多  # documentElement  # clientHeight  # clientWidth  # document  # alert  # getComputedStyle  # null  # class  # currentStyle  # JavaScript  # strong  # msg 


相关文章: 制作网站的基本流程,设计网站的软件是什么?  建站主机选哪种环境更利于SEO优化?  如何通过wdcp面板快速创建网站?  制作营销网站公司,淘特是干什么用的?  如何高效完成自助建站业务培训?  如何在阿里云域名上完成建站全流程?  如何在阿里云部署织梦网站?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何在阿里云完成域名注册与建站?  如何选择高效便捷的WAP商城建站系统?  手机网站制作与建设方案,手机网站如何建设?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  装修招标网站设计制作流程,装修招标流程?  如何快速搭建响应式可视化网站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  制作网页的网站有哪些,电脑上怎么做网页?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何用好域名打造高点击率的自主建站?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  建站之星伪静态规则如何设置?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  高端建站如何打造兼具美学与转化的品牌官网?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何做静态网页,sublimetext3.0制作静态网页?  建站之星代理费用多少?最新价格详情介绍  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  魔毅自助建站系统:模板定制与SEO优化一键生成指南  建站之星如何配置系统实现高效建站?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  建站主机数据库如何配置才能提升网站性能?  建站之星后台密码如何安全设置与找回?  制作网站的模板软件,网站怎么建设?  ,有什么在线背英语单词效率比较高的网站?  h5在线制作网站电脑版下载,h5网页制作软件?  如何在万网ECS上快速搭建专属网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  学校建站服务器如何选型才能满足性能需求?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何快速查询域名建站关键信息?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  如何用AWS免费套餐快速搭建高效网站?  如何通过.red域名打造高辨识度品牌网站?  上海网站制作开发公司,上海买房比较好的网站有哪些?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。