旧版Android浏览器没有一些JS功能?

时间:2018-06-13 13:11:01

标签: javascript android legacy

在Oreo设备上测试了包含html文件的webview的应用程序后,一切都运行正常。但是,当使用Kitkat设备(模拟器)时,我收到错误Possible Unhandled Promise Rejection: "Object function Object() { [native code] } has no method 'entries'"

这表面上是因为我在html中使用了Object.entries()。有什么方法可以解决这个问题吗? Kitkat仿真器上的浏览器版本为4.4.2-4729339,仿真器是Android Studio上的默认仿真器。

1 个答案:

答案 0 :(得分:1)

要使新功能在旧版浏览器中运行,您可以使用所谓的Polyfills,这些主要用于在github或Mozilla Developer Network上查找。

您正在寻找的是Object.entries() polyfill:

if (!Object.entries)
  Object.entries = function( obj ){
    var ownProps = Object.keys( obj ),
        i = ownProps.length,
        resArray = new Array(i); // preallocate the Array
    while (i--)
      resArray[i] = [ownProps[i], obj[ownProps[i]]];

    return resArray;
  };

(代码取自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Polyfill

一般情况下,我建议您使用caniuse.com来检查哪些浏览器支持哪种功能。