`

前端开发手机内置浏览器(含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

 

 

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

 

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


更多实例应用扫码体验:

分享到:
评论

相关推荐

    前端JS基础知识点及常考面试题汇总

    JavaScript,简称JS,是前端开发的核心技术之一,用于构建交互式的网页应用。它是一种轻量级的解释型编程语言,广泛应用于网页和网络应用开发。本篇内容将深入探讨前端JS基础知识点及其常考面试题,帮助面试者和...

    日期下拉函数及案例

    此外,考虑到不同浏览器的兼容性,可能需要引入jQuery或其他库来简化跨浏览器的开发工作。例如,jQuery UI的日期选择器就是一个强大且兼容性良好的解决方案。 在这个压缩包中的"日期函数"文件,可能包含了实现上述...

    网易校园招聘历年经典面试题汇总:前端岗1

    这只是前端面试题的一部分,涉及到的知识点涵盖了HTML5兼容性、JavaScript基础、CSS布局、正则表达式、浏览器特性、网络请求、数据存储等多个方面。深入理解并熟练掌握这些概念和技术,对于前端开发者来说至关重要。

    2017年前端面试题整理汇总100题.pdf

    - **兼容性**:支持CommonJS、AMD、ES6等多种模块规范,便于旧项目的代码迁移。 - **插件系统**:Webpack具有强大的插件系统,可扩展其功能,如热模块替换(Hot Module Replacement)等。 - **入口和出口配置**:...

    jquery开发入门整理(所需要了解的)

    跨浏览器兼容性一直是前端开发中的一大挑战。不同的浏览器对JavaScript的支持程度和解释方式存在差异,导致同一段代码在不同浏览器中的表现可能截然不同。jQuery通过内部的一套兼容层,解决了大部分主流浏览器之间的...

    jQuery版本汇总.rar

    **jQuery——前端开发的基石** jQuery,一个轻量级、高性能的JavaScript库,自2006年发布以来,已经成为Web开发中不可或缺的一部分。它的核心理念是“Write Less, Do More”,通过简洁的API,使得复杂的DOM操作、...

    javascript格式化日期时间方法汇总

    需要注意的是,尽管上述方法能够在大多数现代浏览器中正常工作,但在进行日期时间操作时,仍有可能遇到浏览器兼容性问题。开发者在实施前应该充分测试不同环境下的表现,确保代码的健壮性。另外,对于较为复杂的日期...

    Jquery常用的方法汇总

    - 出色的浏览器兼容性:支持所有主流浏览器。 - 链式操作方式:允许连续调用多个jQuery方法,简化代码书写。 - 隐式迭代:在选择一组元素时,可以一次性对其每一个元素执行操作。 - 行为层与结构层的分离:通过...

Global site tag (gtag.js) - Google Analytics