`

前端开发手机内置浏览器(含js函数)兼容性汇总之那些踩过的坑

阅读更多

这里会汇总一些移动设备(手机)的内置浏览器兼容性的js函数问题:

 

1、for... of... 坑爹指数:★★★★

      for-of loop是ES6的语法,比较新,导致部分Android手机不支持,例如【华为】

      当一个React的项目在多数手机正常运行时,这个时候有些手机就是不支持这个函数。原因是由于内置浏览器的版本过低,不支持一些新的JS函数。

     解决:使用 原生for循环或forEach函数代替。

     ps 事现日期:2016-06-23


 

2、str.startWith 坑爹指数:★★★★

      这个也是js一些新的特性,当你在享受js操作字符串便利的同时,也承担着多数内置浏览器不兼容的风险,例如【华为】【低版本的iPhone】

       解决:使用字符串的 indexOf() 函数替代

       ps 事现日期:2016-04-10



3、str.search 坑爹指数:★★★★

      这个也是js一些新的特性,当你在享受js操作字符串便利的同时,也承担着多数内置浏览器不兼容的风险,例如【华为】【低版本的iPhone】

       解决:使用字符串的 indexOf() 函数替代

       ps 事现日期:2015-04-08


 

4、window.open 坑爹指数:★★★

      由于它打开的页面是popup类型,导致部分手机浏览器会阻挡并拦截弹窗,根本弹不出来,接下去的步骤就无法完成了。

       解决:使用字符串的 window.location.href 函数替代

       ps 事现日期:2015-10-10



 

5、ES2015 `` 语法 坑爹指数:★★★

      这是ES6的新语法,支持字符串占位、换行拼接,很是好用,实际使用中,Android绝大多数浏览器不支持该函数,iPhone支持该语法。

      `${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()} ${hour}:00:00`

       解决:使用字符串的  ‘ + ’ 函数替代

       today.getFullYear()+'-'+(today.getMonth() + 1)+'-'+today.getDate()+' '+hour+':00:00';


       ps 事现日期:2016-03-24




6、[...Array(size).keys()] 坑爹指数:★★

      这个是ES6的函数,在React项目中即使通过Babel编译,依旧会有部分低版本内核的手机浏览器不支持,例如华为等,导致js操作被阻断,接下去的步骤就无法完成了。

       解决:使用 Array.apply(null, {length: size}) 函数替代

       ps 事现日期:2016-04-15

 

 


7、ES6 数据解构之数组解构 坑爹指数:★★★

      const [touchObj] = e.touches; 数据解构在Es6中很是常见,可是Android和Ios都不支持,只好放弃。

       解决:使用原始获取数组下标 const touchObj = e.touches[0]; 函数替代

       ps 事现日期:2016-08-10

 


8、IOS不支持js onBlur事件 坑爹指数:★★★

      <input onFocus="alert('Support')" onBlur="alert('Not support Yet')">

       解决:官方已知未解决Bug

       参考: https://jira.appcelerator.org/browse/TIMOB-17343

https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html

       解决思路:在整个可点击区域添加浮层,点击后模拟触发onBlur事件。


       ps 事现日期:2016-10-20

 


9、Android不支持css scale缩放动画 坑爹指数:★★★★★

      

@keyframes scaleImg {
  from {
    transform: scale(1);
  }
  to {
    transform: scale(1.2);
  }
}

 

       解决:官方已知未解决Bug

       参考:https://code.google.com/p/android/issues/detail?id=12451

       解决思路:1)不使用动画 2)使用gif替换

/*Method 3*/
@-webkit-keyframes scaleImg {
  from {
    -webkit-transform: scale(1);
  }
  to {
    -webkit-transform: scale(1.2);
  }
}

 


       ps 事现日期:2017-05-10

 


10、ES6 Array.prototype.find() 坑爹指数:★★★

      es6新增的数组find函数,可根据需求搜索子项,Android6以下版本部分手机不支持。

       解决:使用数组的 filter 函数替代,find返回子项,记得filter的时候取数组的index=0.


       ps 事现日期:2017-03-16


 


11、ES6 Promise() 坑爹指数:★★★★

      es6新增的Promise函数,主要用来解决js异步加载的问题,iPhone很积极的已经更新,但是低版本的iPhone和部分低版本的Android手机浏览器内核还不支持该函数,导致处理报错。

       解决:复写Promise函数或使用bluebird.js兼容Promise函数,也可以使用babel转换代码,亦可以使用回调函数替代Promise写法.


       ps 事现日期:2017-06-20

 

 

关于更多兼容性问题不断更新中。

 

若遇到其他不兼容的问题,请评论告诉我,我来整理,让更多坑里的人爬起来。


更多实例应用扫码体验:

分享到:
评论

相关推荐

    前端不同浏览器兼容性解决办法

    在前端开发过程中,浏览器兼容性问题常常困扰着开发者。不同的浏览器对HTML、CSS、JavaScript的解析和执行方式存在差异,导致同一代码在不同浏览器中显示或运行效果不一致。本篇将详细介绍如何处理IE、Firefox(FF)...

    浏览器函数兼容

    案例:indexOf 在ECMA-262 标准 的第5版中被加入,但并非所有的浏览器都支持该方法。你可以在编写scripts时,在其开头使用以下代码,它能够允许你在没有本地支持的情况下使用indexOf方法。该算法符合ECMA-262第5版...

    易语言千里模块更改语言内置浏览器IE版本

    有时,为了兼容性或者性能需求,我们需要调整内置浏览器使用的IE渲染引擎版本。传统上,这可能需要复杂的设置和代码调整,但易语言通过千里模块提供了一种简便的方法来实现这一目标。 首先,我们需要了解千里模块...

    JavaScript前端开发案例教程-源代码.rar

    JavaScript,作为全球最广泛使用的编程语言之一,是前端开发的核心技术。这个名为"JavaScript前端开发案例教程-源代码.rar"的压缩包文件提供了一系列实践案例,帮助开发者深入理解和掌握JavaScript在网页开发中的...

    js开发时钟(浏览器兼容)

    这篇博客“js开发时钟(浏览器兼容)”可能详细介绍了如何利用JavaScript在各种浏览器上实现一个兼容性良好的时钟。 首先,让我们探讨一下JavaScript中的时间处理。JavaScript内置了`Date`对象,它提供了获取当前日期...

    WEB浏览器兼容性开发宝典

    在Web开发领域,浏览器兼容性始终是一个不可忽视的重要问题。"WEB浏览器兼容性开发宝典"聚焦于解决IE(Internet Explorer)与Firefox浏览器之间存在的差异,帮助开发者在跨平台环境中创建一致的用户体验。这个资源包...

    HTML5+JQUERY文件上传,手机浏览器兼容性好(asp.net例子) 源码

    HTML5和jQuery是现代网页开发中的重要技术,它们在文件上传功能方面提供了强大的支持,尤其在考虑到手机浏览器的兼容性时。在这个asp.net示例中,我们探讨如何利用这两者来实现一个高效的文件上传功能。 首先,...

    前端开发必备JavaScript(含源码课件笔记总结)

    JavaScript是前端开发的核心技术之一,它为网页添加交互性,使静态内容变得生动起来。这份“前端开发必备JavaScript(含源码课件笔记总结)”的资源集合是前端开发者不可多得的学习材料,包含了丰富的知识内容,旨在...

    手机端PDF展示js(无插件无需安装,兼容各浏览器)

    PDF.js是Mozilla开发的一个开源JavaScript库,用于在Web浏览器中渲染PDF文档,无需任何外部插件或Flash支持。这个库的出现使得开发者可以方便地在手机端展示PDF内容,极大地提升了用户体验,因为用户不再需要安装...

    前端开发简历模板-前端开发工程师-1年.doc

    -浏览器兼容性 -ajax -node.js -ES6新特性 - JavaScript性能优化 -周期虚拟DOM树 -组件化开发 7. 项目经验: -东游西学项目 -LittleAngel项目 -故里电影框项目 -萝卜小旅项目 -熊猫药站项目 8. 教育...

    Firefox浏览器兼容JS脚本供参考

    在开发Web应用时,浏览器兼容性是一个常见的挑战,特别是JavaScript脚本在不同的浏览器上可能会有不同的行为。本文将详细解析在Firefox浏览器中实现JS脚本兼容的一些关键点,以确保代码在Firefox和其他浏览器上的...

    C# 浏览器完整版开发,支持视频、JS交互

    采用谷歌内核CefSharp进行开发,主要是为了实现JS交互,实现前端JS调用原生能力,如:相机、VLC视频能力(主要播放流视频)等。 实现主要功能: 浏览器标签、HTML页面能播放视频、下载记录、JS交互(能调用原生相机...

    JavaScript内置函数与内置对象.doc

    JavaScript内置函数与内置对象.doc

    JavaScript+jQuery交互式Web前端开发-源代码.zip

    JavaScript 和 jQuery 是现代 Web 前端开发中的两个核心工具,它们共同为创建动态、交互式的网页提供了强大的功能。在本教程中,我们将深入探讨如何将这两种技术与 HTML 和 CSS 结合,以实现高效的网页设计。 ...

    JavaScript中解决多浏览器兼容性23个问题的快速解决方法

    在前端开发中,由于各种浏览器对JavaScript的支持程度和实现细节各不相同,常常会导致一些兼容性问题。这些问题如果不妥善处理,可能会影响到页面的正常显示和功能的正常使用。本文将围绕JavaScript中的多浏览器兼容...

    前端跨界开发指南:JavaScript工具库原理解析与实战.docx

    跨浏览器兼容性问题也是开发者需要面对的挑战,不同的浏览器对JavaScript的支持程度不一,工具库需要确保在主流浏览器上的稳定运行。 语言层面,JavaScript的动态类型和全局变量可能导致代码错误和难以调试的问题。...

    系统兼容性解决方案.doc

    本篇文档将深入探讨系统兼容性的解决方案,主要关注跨平台支持、数据库适配、前端浏览器兼容性以及JavaScript新特性的兼容处理。 首先,跨平台兼容性主要依赖于Java的特性。Java程序通过javac命令编译为字节码文件...

    WEB前端标准在各浏览器中的差异.zip_web标准_浏览器

    3. **JavaScript**:JavaScript是前端的核心语言,虽然ECMAScript标准为JS设定了基础,但不同浏览器的JavaScript引擎对新特性的实现速度不一致。比如,ES6的一些特性,如箭头函数、模板字符串和Promise,在旧版IE中...

    Web前端开发中级样题一理+实.zip

    9. **浏览器兼容性**:处理不同浏览器之间的差异,使用polyfill或Babel转译ES6+新特性。 通过解答这些样题,学员不仅可以加深对Web前端技术的理解,还能提升解决问题的实际能力,为1+x Web前端开发认证考试做好充分...

    webcamjs兼容多浏览器调用摄像头拍照上传,兼容H5和flash

    WebcamJS是一个强大的JavaScript库,专门设计用于在各种浏览器中实现摄像头拍照并上传的功能。它不仅支持HTML5的WebRTC接口,还通过Flash提供对老式浏览器的兼容性,包括Internet Explorer 8、9、10、11以及Edge。...

Global site tag (gtag.js) - Google Analytics