`

前端开发手机内置浏览器(含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`对象,它提供了获取当前日期...

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

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

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

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

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

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

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

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

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

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

    兼容各浏览器的JS点击复制2018年

    在IT行业中,JavaScript(JS)是一种广泛使用的编程语言,尤其在网络前端开发中扮演着至关重要的角色。"兼容各浏览器的JS点击复制2018年"这个主题涉及到的是如何使用JavaScript实现一个功能,使得用户可以通过点击...

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

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

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

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

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

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

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

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

    浏览器兼容 谷歌IE8.js,IE9.js下载

    在IT行业中,浏览器兼容性是一项重要的考虑因素,尤其是在前端开发中。不同的浏览器可能对Web标准的支持程度不同,导致代码在不同浏览器上运行效果各异。谷歌(Google)为了解决这个问题,推出了针对旧版Internet ...

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

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

    图片浏览器——JS

    【图片浏览器——JS】是一种基于JavaScript技术实现的用于展示和浏览图片的应用程序。在网页设计中,图片浏览器常被用来创建交互式的图片展示效果,如幻灯片展示、图片轮播等,为用户提供友好的浏览体验。在这个项目...

    JavaScript前端开发程序设计教程.rar

    JavaScript,简称JS,是一种广泛应用于现代Web开发的轻量级、解释型编程语言,它以其易学易用性,灵活性和强大的功能深受开发者喜爱。在前端开发领域,JavaScript扮演着至关重要的角色,使得网页不仅限于静态展示,...

    1500个前端开发常用JavaScript特效

    JavaScript,作为前端开发的核心语言,拥有丰富的功能和广泛的应用,为网页添加动态效果、交互性和数据处理能力。"1500个前端开发常用JavaScript特效"这个资源集合,显然是一个全面展示JavaScript在网页特效实现方面...

Global site tag (gtag.js) - Google Analytics