当前位置: 首页 > news >正文

浏览器兼容性问题汇总

1.IE10版本以上浏览器input标签后面自带一个X问题

IE10,IE11浏览器当点击input text文本框时,输入文本后出现一个删除功能的X按钮

IE浏览器效果,而谷歌浏览器没有

解决方案:给input添加如下CSS样式 input::-ms-clear{display:none;}

2.IE8以下不支持canvas 标签

可以下载Google出的Excanvas.js库,它是利用IE支持的VML对象来模拟Canvas的绘图的,有些情况下可用,但无法穷尽Canvas的所有功能,在页面中引用Excanvas.js文件,最好在标签中

3.IE8以下不支持html5 标签

解决方案:可以用封装好的js库— html5shiv.js

// 增加判断,如果是IE9以下的IE浏览器将创建script标签引入html5shiv,这样非IE浏览器就会忽视这段代码,也就不会进行无谓的http请求了// Google的html5shiv包 <!--[if lt IE9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> // 国内的html5shiv包 <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <![endif]-->
4.IE8以下不支持CSS媒体查询

在css文件的引用位置后面引入js,尽量在页面最上面引入

<script src="https://cdn.bootcss.com/respond.js/1.1.0/respond.min.js"></script>

5.js事件绑定
//IE7、IE8 dom.attachEvent(); //其他浏览器 dom.addEventListener('click',function(event){},false); //兼容写法 ele元素 evType事件 fn执行函数 useCapture事件监听器在‌冒泡阶段‌执行,默认为false function addEvent(ele, evType, fn, useCapture) { if (ele.addEventListener) { //一般浏览器 var e =2.718 ele.addEventListener(evType, fn, useCapture); return e; } else if (ele.attachEvent) { // IE var e = ele.attachEvent('on' + evType, fn); return e; } else { // 其他DOM事件 ele['on' + evType] = fn; } } //addEventListener() || removeEventListener() ; // 标准浏览器的监听和移除写法 //attachEvent() || detachEvent() // IE的监听和移除写法
6.js获取event事件对象
//ie浏览器通过 window.event获得事件源对象 //其他浏览器通过 e //兼容写法如下 function clickBtn(e){ var ev = e || window.event; .... }
7.获取event事件源对象
//ie浏览器获取事件源对象(触发事件的标签对应的dom对象)event.srcElement //其他浏览器:event.target //兼容性写法: var srcObj = event.srcElement?event.srcElement:event.target;
8.阻止事件冒泡
var e = e || Window.event; if (e.stopPropagation) { // 其他 e.stopPropagation(); } else { // IE... . e.cancelBubble = true; }
9.阻止默认事件
// js阻止默认事件,一般阻止a链接href, form表单submit提交等 var e = e || Window.event; if (e.preventDefault) { // 其他浏览器 e.preventDefault(); } else { // IE... e.returnValue = false; }
10.innerText 的问题
if (navigator.appName.indexOf("Explorer") > -1){ document.getElementById("element").innerText = "text"; // IE } else { document.getElementById("element").textContent = "text"; // 其他 }
11.禁止复制、选中文本
{-webkit-user-select:none; -moz-user-select:none; -khtml-user-select:none; user-select:none; }
12.apple-mobile-web-app-capable
<meta name="apple-mobile-web-app-capable"content="yes"> //如果content设置为yes,Web应用会以全屏模式运行,反之,则不会。content的默认值是no,表示正常显示。你可以通过只读属性window.navigator.standalone来确定网页是否以全屏模式显示
13.format-detection
<meta name="format-detection"content="telephone=no"> //默认情况下,设备会自动识别任何可能是电话号码的字符串。设置telephone=no可以禁用这项功能
14.上下拉动滚动条时卡顿、慢
body {-webkit-overflow-scrolling: touch; overflow-scrolling: touch;} //Android3+和iOS5+支持CSS3的新属性为overflow-scrolling
15.长时间按住页面出现闪退
.element { -webkit-touch-callout:none; }
16.iphone及ipad下输入框默认内阴影
.Element{ -webkit-appearance:none; }
17.ios和android下触摸元素时出现半透明灰色遮罩
.Element { -webkit-tap-highlight-color:rgba(255,255,255,0) } //设置alpha值为0就可以去除半透明灰色遮罩,备注:transparent的属性值在android下无效。
18.某些Android手机圆角失效
.element{background-clip: padding-box;}
19.设置缓存
<meta http-equiv="Cache-Control"content="no-cache"/> //手机页面通常在第一次加载后会进行缓存,然后每次刷新会使用缓存而不是去重新向服务器发送请求。如果不希望使用缓存可以设置no-cache。
20.启动画面
<link rel="apple-touch-startup- image "href="start.png"/> //iOS下页面启动加载时显示的画面图片,避免加载时的白屏。 //可以通过madia来指定不同的大小: <!--iPhone--> <link href="apple-touch-startup-image-320x460.png"media="(device-width: 320px)" rel="apple-touch-startup-image"/> <!-- iPhone Retina --> <link href="apple-touch-startup-image-640x920.png"media="(device-width: 320px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image"/> <!-- iPhone 5--> <link rel="apple-touch-startup-image"media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="apple-touch-startup-image-640x1096.png"> <!-- iPad portrait--> <link href="apple-touch-startup-image-768x1004.png"media="(device-width: 768px) and (orientation: portrait)" rel="apple-touch-startup-image"/> <!-- iPad landscape--> <link href="apple-touch-startup-image-748x1024.png"media="(device-width: 768px) and (orientation: landscape)" rel="apple-touch-startup-image"/> <!-- iPad Retina portrait--> <link href="apple-touch-startup-image-1536x2008.png"media="(device-width: 1536px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image"/> <!-- iPad Retina landscape--> <link href="apple-touch-startup-image-1496x2048.png"media="(device-width: 1536px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)"rel="apple-touch-startup-image"/>
21.IOS中input键盘事件keyup、keydown、keypress支持不是很好

用input search做模糊搜索的时候,在键盘里面输入关键词,会通过ajax后台查询,然后返回数据,然后再对返回的数据进行关键词标红。用input监听键盘keyup事件,在安卓手机浏览器中是可以的,但是在ios手机浏览器中变红很慢,用输入法输入之后,并未立刻相应keyup事件,只有在通过删除之后才能相应

//可以用html5的oninput事件去代替keyup <input type="text"id="testInput"> <script type="text/javascript"> document.getElementById('testInput').addEventListener('input',function(e){ varvalue = e.target.value; }); </script>
22.h5网站input 设置为type=number的问题

问题一是maxlength属性不好用了

<input type="number"οninput="checkTextLength(this ,10)"> <script> functioncheckTextLength(obj, length) { if(obj.value.length > length) { obj.value = obj.value.substr(0, length); } } </script>

问题二是form提交的时候,默认给取整了

form提交默认做了表单验证,step默认是1,要设置step属性,假如保留2位小数,写法如下:

<input type="number"step="0.01"/>

input 中type=number,一般会自动生成一个上下箭头,点击上箭头默认增加一个step,点击下箭头默认会减少一个step。number中默认step是1。也就是step=0.01,可以允许输入2位小数,并且点击上下箭头分别增加0.01和减少0.01

问题三是去除input默认样式

input[type=number] { -moz-appearance:textfield; } input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
23.IOS键盘字母输入,默认首字母大写
<input type="text" autocapitalize="off"/> //设置属性autocapitalize="off"
24.关于 iOS 与 OS X 端字体的优化(横竖屏会出现字体加粗不一致等)
//iOS 浏览器横屏时会重置字体大小,设置 text-size-adjust 为 none 可以解决 iOS 上的问题,但桌面版 Safari 的字体缩放功能会失效,因此最佳方案是将 text-size-adjust 为 100% 。 .element{ -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; text-size-adjust:100%; }
25.小程序ios键盘字数限制input的maxlength在有问题
//ios端汉字输入拼音 会被当作length,一旦超过了max-length, 键盘上汉字还没拼出来 就已经输入不了 //解决方法:去掉maxlength,使用bindinput方法 <input type="text" bindinput="inputChange" /> <script> inputChange(e) { let text = e.detail.value.trim() this.setData({ name:text.substring(0,10) }) } </script>
26.string.replaceAll()

ios正常,安卓不兼容replaceAll方法,建议改用replace

http://www.jsqmd.com/news/540774/

相关文章:

  • 五一视界首份成绩单亮相,一系列大动作该咋看?
  • XHS_Business_Idea_Validator-小红书解析市场机会智能体
  • 阿里云代理商:阿里云无影云电脑部署 OpenClaw 接入 QQ 机器人全攻略
  • 多站点价格不一致跨境卖家如何统一价格策略
  • 手把手推导NCP1380准谐振反激公式:用Mathcad复现ON官方计算书(附推导过程)
  • 喜马拉雅音频下载器:如何轻松批量保存付费有声小说和VIP内容?
  • SDMatte抠图结果后处理:Alpha Matte转蒙版、透明PNG抗锯齿优化、批量重命名脚本
  • 如何用智能工具重塑英雄联盟体验:League-Toolkit全场景应用指南
  • 学纹绣纹眉怎么选机构?纯干货挑选攻略,新手入门必看 - 品牌测评鉴赏家
  • 启世计划紧急回应黑客攻击 系统修复中承诺全额补偿
  • LyricsX:macOS音乐体验的高效解决方案
  • 11-Xtuner具体使用以及LLama Factory与Xtuner多卡微调大模型
  • DBeaver驱动管理优化方案:打造高效数据库连接新体验
  • 虚拟手柄技术全解析:从内核驱动到跨平台游戏体验
  • Cadence OrCAD层次化设计实战:从扁平原理图到模块化系统的完整转换指南
  • 【AI产品经理学习路线】AI产品经理成长之路:从零基础到专家的详细学习路线全解析
  • 采购实在 Agent 后,多久能完成上线实施?——揭秘企业级 AI Agent 的分钟级交付与落地实践
  • 2026年敏感肌专用的漱口水品牌推荐:实测温和好用:长效清晰不刺激口腔 - 资讯焦点
  • Windows 11 LTSC应用商店修复实战指南:从故障诊断到企业级部署
  • OBS高级计时器:提升直播专业度的时间管理工具
  • 抖音无水印视频批量下载完整教程:5分钟快速上手
  • Artisan咖啡烘焙软件:开源专业烘焙工具终极指南
  • 3/26
  • 告别乱码!手把手教你为Keil生成的.c/.v文件在VSCode中固定GB2312编码
  • COMSOL—超声相控阵聚焦仿真 模型介绍:激励函数是由高斯波和正弦波组成的脉冲函数
  • 长春2026汽车抵押哪家好?从押证不押车到全款结清,五大维度深度测评本地8家机构 - 资讯焦点
  • Zephyr OS实战:5分钟搞定智能家居传感器开发(基于nRF52840)
  • LR分析器避坑指南:从移进-归约冲突到LALR(1)的5个常见错误解析
  • Maxwell16.0实战:如何用实验电流数据搞定电机仿真(附.tab文件制作技巧)
  • 实时屏幕翻译:打破语言壁垒的跨场景解决方案