热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

游览器兼容问题解决(转载)

https:juejin.impost59a3f2fe6fb9a0249471cbb4浏览器兼容性问题解决方案总结普及:浏览器的兼容性问题,往往是个别浏

https://juejin.im/post/59a3f2fe6fb9a0249471cbb4

 

浏览器兼容性问题解决方案 · 总结

普及:浏览器的兼容性问题,往往是个别浏览器(没错,就是那个与众不同的浏览器)对于一些标准的定义不一致导致的。俗话说:没有IE就没有伤害。

贴士:内容都是自己总结的,不免会出现错误或者bug,欢迎更正和补充,本帖也会不断更新。

Normalize.css

不同浏览器的默认样式存在差异,可以使用 Normalize.css 抹平这些差异。当然,你也可以定制属于自己业务的 reset.css

<link href&#61;"https://cdn.bootcss.com/normalize/7.0.0/normalize.min.css" rel&#61;"stylesheet">

简单粗暴法

* { margin: 0; padding: 0; }

html5shiv.js

解决 ie9 以下浏览器对 html5 新增标签不识别的问题。

respond.js

解决 ie9 以下浏览器不支持 CSS3 Media Query 的问题。

<script src&#61;"https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js">script>

picturefill.js

解决 IE 9 10 11 等浏览器不支持  标签的问题

<script src&#61;"https://cdn.bootcss.com/picturefill/3.0.3/picturefill.min.js">script>

IE 条件注释

IE 的条件注释仅仅针对IE浏览器&#xff0c;对其他浏览器无效

 

background-repeat: no-repeat; background-size: cover; -ms-behavior: url(&#39;css/backgroundsize.min.htc&#39;); behavior: url(&#39;css/backgroundsize.min.htc&#39;); }

IE6-7 line-height 失效的问题

问题&#xff1a;在ie 中 img 与文字放一起时&#xff0c;line-height 不起作用

解决&#xff1a;都设置成 float

width:100%

width:100% 这个东西在 ie 里用很方便&#xff0c;会向上逐层搜索 width 值&#xff0c;忽视浮动层的影响.

Firefox 下搜索至浮动层结束&#xff0c;如此&#xff0c;只能给中间的所有浮动层加 width:100%才行&#xff0c;累啊。

opera 这点倒学乖了&#xff0c;跟了 ie

cursor:hand

显示手型 cursor: hand&#xff0c;ie6/7/8、opera 都支持&#xff0c;但是safari 、 ff 不支持

cursor: pointer;

td 自动换行的问题

问题&#xff1a;table 宽度固定&#xff0c;td 自动换行

解决&#xff1a;设置 Table 为 table-layout: fixed&#xff0c;td 为 word-wrap: break-word

让层显示在 FLASH 之上

想让层的内容显示在 flash 上&#xff0c;把 FLASH 设置透明即可

1、" wmode " value&#61;"transparent" />
2、"wmode" value&#61;"opaque"/>

键盘事件 keyCode 兼容性写法

var inp &#61; document.getElementById(&#39;inp&#39;)
var result &#61; document.getElementById(&#39;result&#39;)function getKeyCode(e) {e &#61; e ? e : (window.event ? window.event : "")return e.keyCode ? e.keyCode : e.which } inp.onkeypress &#61; function(e) { result.innerHTML &#61; getKeyCode(e) }

求窗口大小的兼容写法

// 浏览器窗口可视区域大小&#xff08;不包括工具栏和滚动条等边线&#xff09;
// 1600 * 525
var client_w &#61; document.documentElement.clientWidth || document.body.clientWidth; var client_h &#61; document.documentElement.clientHeight || document.body.clientHeight; // 网页内容实际宽高&#xff08;包括工具栏和滚动条等边线&#xff09; // 1600 * 8 var scroll_w &#61; document.documentElement.scrollWidth || document.body.scrollWidth; var scroll_h &#61; document.documentElement.scrollHeight || document.body.scrollHeight; // 网页内容实际宽高 (不包括工具栏和滚动条等边线&#xff09; // 1600 * 8 var offset_w &#61; document.documentElement.offsetWidth || document.body.offsetWidth; var offset_h &#61; document.documentElement.offsetHeight || document.body.offsetHeight; // 滚动的高度 var scroll_Top &#61; document.documentElement.scrollTop||document.body.scrollTop;

DOM 事件处理程序的兼容写法&#xff08;能力检测&#xff09;

var eventshiv &#61; {// event兼容getEvent: function(event) {return event ? event : window.event;},// type兼容getType: function(event) {return event.type; }, // target兼容 getTarget: function(event) { return event.target ? event.target : event.srcelem; }, // 添加事件句柄 addHandler: function(elem, type, listener) { if (elem.addEventListener) { elem.addEventListener(type, listener, false); } else if (elem.attachEvent) { elem.attachEvent(&#39;on&#39; &#43; type, listener); } else { // 在这里由于.与&#39;on&#39;字符串不能链接&#xff0c;只能用 [] elem[&#39;on&#39; &#43; type] &#61; listener; } }, // 移除事件句柄 removeHandler: function(elem, type, listener) { if (elem.removeEventListener) { elem.removeEventListener(type, listener, false); } else if (elem.detachEvent) { elem.detachEvent(&#39;on&#39; &#43; type, listener); } else { elem[&#39;on&#39; &#43; type] &#61; null; } }, // 添加事件代理 addAgent: function (elem, type, agent, listener) { elem.addEventListener(type, function (e) { if (e.target.matches(agent)) { listener.call(e.target, e); // this 指向 e.target } }); }, // 取消默认行为 preventDefault: function(event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue &#61; false; } }, // 阻止事件冒泡 stopPropagation: function(event) { if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble &#61; true; } } };


转:https://www.cnblogs.com/kaijiangyugty/p/11179843.html



推荐阅读
  • 电信网为不能访问联通服务器的网站_老板说网站慢,我们总结了三大阶段提升性能...
    作者:李平来源:https:www.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • document .ready中的函数怎么被按钮调用? ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 小白的Python 学习笔记(八)推导式详解
    大家好,今天我总结一下Python的推导式,首先让我们来看定义推导式(comprehensions)是Python的一种独有特性,是可以从一个数据序列构建另一个新的数据序列的结构体 ... [详细]
author-avatar
月满西楼2502890155
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有