JS中浏览器兼容性问题

╰半橙微兮° 2022-06-09 11:11 447阅读 0赞

1、浏览器的宽高问题

  1. var winW=document.body.clientWidth||document.docuemntElement.clientWidth;//网页可见区域宽
  2. var winH=document.body.clientHeight||document.docuemntElement.clientHeight;//网页可见区域宽
  3. //以上为不包括边框的宽高,如果是offsetWidth或者offsetHeight的话包括边框
  4. var winWW=document.body.scrollWidth||document.docuemntElement.scrollWidth;//整个网页的宽
  5. var winHH=document.body.scrollHeight||document.docuemntElement.scrollHeight;//整个网页的高
  6. var scrollHeight=document.body.scrollTop||document.docuemntElement.scrollTop;//网页被卷去的高
  7. var scrollLeft=document.body.scrollLeft||document.docuemntElement.scrollLeft;//网页左卷的距离
  8. var screenH=window.screen.height;//屏幕分辨率的高
  9. var screenW=window.screen.width;//屏幕分辨率的宽
  10. var screenX=window.screenLeft;//浏览器窗口相对于屏幕的x坐标(除了FireFox)
  11. var screenXX=window.screenX;//FireFox相对于屏幕的X坐标
  12. var screenY=window.screenTop;//浏览器窗口相对于屏幕的y坐标(除了FireFox)
  13. var screenYY=window.screenY;//FireFox相对于屏幕的y坐标

2、event事件问题:

  1. document.onclick=function(ev){ //谷歌火狐的写法,IE9以上支持,往下不支持;
  2. var e=ev;
  3. console.log(e);
  4. }
  5. document.onclick=function(){ //谷歌和IE支持,火狐不支持;
  6. var e=event;
  7. console.log(e);
  8. }
  9. document.onclick=function(ev){ //兼容写法;
  10. var e=ev||window.event;
  11. var mouseX=e.clientX;//鼠标X轴的坐标
  12. var mouseY=e.clientY;//鼠标Y轴的坐标
  13. }

3、DOM节点相关的问题

  1. //DOM节点相关,主要兼容IE 6 7 8
  2. function nextnode(obj){ //获取下一个兄弟节点
  3. if (obj.nextElementSibling) {
  4. return obj.nextElementSibling;
  5. } else{
  6. return obj.nextSibling;
  7. };
  8. }
  9. function prenode(obj){ //获取上一个兄弟节点
  10. if (obj.previousElementSibling) {
  11. return obj.previousElementSibling;
  12. } else{
  13. return obj.previousSibling;
  14. };
  15. }
  16. function firstnode(obj){ //获取第一个子节点
  17. if (obj.firstElementChild) {
  18. return obj.firstElementChild;//非IE678支持
  19. } else{
  20. return obj.firstChild;//IE678支持
  21. };
  22. }
  23. function lastnode(obj){ //获取最后一个子节点
  24. if (obj.lastElementChild) {
  25. return obj.lastElementChild;//非IE678支持
  26. } else{
  27. return obj.lastChild;//IE678支持
  28. };
  29. }

4、获取元素的非行间样式值

  1. function getStyle(object,oCss) {
  2. if (object.currentStyle) {
  3. return object.currentStyle[oCss];//IE
  4. }else{
  5. return getComputedStyle(object,null)[oCss];//除了IE
  6. }
  7. }

5、设置事件监听

  1. function addEvent(obj,type,fn){ //添加事件监听,三个参数分别为 对象、事件类型、事件处理函数,默认为false
  2. if (obj.addEventListener) {
  3. obj.addEventListener(type,fn,false);//非IE
  4. } else{
  5. obj.attachEvent('on'+type,fn);//ie,这里已经加上on,传参的时候注意不要重复加了
  6. };
  7. }
  8. function removeEvent(obj,type,fn){ //删除事件监听
  9. if (obj.removeEventListener) {
  10. obj.removeEventListener(type,fn,false);//非IE
  11. } else{
  12. obj.detachEvent('on'+type,fn);//ie,这里已经加上on,传参的时候注意不要重复加了
  13. };
  14. }

6、元素到浏览器边缘的距离

  1. function offsetTL(obj){ //获取元素内容距离浏览器边框的距离(含边框)
  2. var ofL=0,ofT=0;
  3. while(obj){
  4. ofL+=obj.offsetLeft+obj.clientLeft;
  5. ofT+=obj.offsetTop+obj.clientTop;
  6. obj=obj.offsetParent;
  7. }
  8. return{left:ofL,top:ofT};
  9. }

7、阻止事件传播

  1. function offsetTL(obj){ //获取元素内容距离浏览器边框的距离(含边框)
  2. var ofL=0,ofT=0;
  3. while(obj){
  4. ofL+=obj.offsetLeft+obj.clientLeft;
  5. ofT+=obj.offsetTop+obj.clientTop;
  6. obj=obj.offsetParent;
  7. }
  8. return{left:ofL,top:ofT};
  9. }

8、阻止默认事件

  1. document.onclick=function(e){
  2. var e=e||window.event;
  3. if (e.preventDefault) {
  4. e.preventDefault();//W3C标准
  5. }else{
  6. e.returnValue='false';//IE..
  7. }
  8. }

9、EVENT中的target事件

  1. document.onmouseover=function(e){
  2. var e=e||window.event;
  3. var Target=e.target||e.srcElement;//获取target的兼容写法,后面的为IE
  4. var from=e.relatedTarget||e.formElement;//鼠标来的地方,同样后面的为IE...
  5. var to=e.relatedTarget||e.toElement;//鼠标去的地方
  6. }

10、鼠标的滚动事件

  1. //火狐中的滚轮事件
  2. document.addEventListener("DOMMouseScroll",function(event){
  3. alert(event.detail);//若前滚的话为 -3,后滚的话为 3
  4. },false)
  5. //非火狐中的滚轮事件
  6. document.onmousewheel=function(event){
  7. alert(event.detail);//前滚:120,后滚:-120
  8. }

发表评论

表情:
评论列表 (有 0 条评论,447人围观)

还没有评论,来说两句吧...

相关阅读

    相关 safari浏览器兼容问题

    今天写代码遇到的一个bug,在chrome上显示得好好的时间,一到Safari就提示 “invalid date”,于是回来看代码(为了一目了然,进行一些处理): v

    相关 浏览器兼容问题

    浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。 解决方案:CSS

    相关 浏览器兼容问题

    1,浏览器兼容问题一:不同浏览器的标签默认的margin和padding不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大