博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象不支持“startsWith”属性或方法
阅读量:6442 次
发布时间:2019-06-23

本文共 2146 字,大约阅读时间需要 7 分钟。

hot3.png

项目兼容性问题

开发环境

  • 360浏览器
  • vue "^2.5.17"
  • vue-cli3

问题

对象不支持“startsWith”属性或方法

startsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“开头”的,根据判断结果返回 true 或 false。
查阅,发现ie根本就不支持,因此使用ie内核的360浏览器必然也不支持

解决方案

这个是es6字符串的一个方法,但是ie不支持,因此只能使用babel-polyfill,这个是对这些不支持方法的实现,解决方法如下:

  • npm install babel-polyfill -S
  • import 'babel-polyfill' --- 在index.js中引入

新问题 在360上很奇怪,有的页面还会报这个错 然后我就把MDN的的polyfill给引过来了

  • 新建一个polyfill.js,代码如下
if (!String.prototype.startsWith) {  (function() {    'use strict'; // needed to support `apply`/`call` with `undefined`/`null`    var defineProperty = (function() {      // IE 8 only supports `Object.defineProperty` on DOM elements      try {        var object = {};        var $defineProperty = Object.defineProperty;        var result = $defineProperty(object, object, object) && $defineProperty;      } catch(error) {}      return result;    }());    var toString = {}.toString;    var startsWith = function(search) {      if (this == null) {        throw TypeError();      }      var string = String(this);      if (search && toString.call(search) == '[object RegExp]') {        throw TypeError();      }      var stringLength = string.length;      var searchString = String(search);      var searchLength = searchString.length;      var position = arguments.length > 1 ? arguments[1] : undefined;      // `ToInteger`      var pos = position ? Number(position) : 0;      if (pos != pos) { // better `isNaN`        pos = 0;      }      var start = Math.min(Math.max(pos, 0), stringLength);      // Avoid the `indexOf` call if no match is possible      if (searchLength + start > stringLength) {        return false;      }      var index = -1;      while (++index < searchLength) {        if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {          return false;        }      }      return true;    };    if (defineProperty) {      defineProperty(String.prototype, 'startsWith', {        'value': startsWith,        'configurable': true,        'writable': true      });    } else {      String.prototype.startsWith = startsWith;    }  }());}

然后再main.js引入这个js

import './util/polyfill'

转载于:https://my.oschina.net/u/3150903/blog/3033676

你可能感兴趣的文章
测量符合闭合全圆法导线记录表 计算表 成果表
查看>>
编写你自己的单点登录(SSO)服务
查看>>
windbg定位WEB性能瓶颈案例一则
查看>>
我的MYSQL学习心得(十四) 备份和恢复
查看>>
【技术贴】解决MySql连接不上 ip远程连接Host is not allowed to conn
查看>>
nodejs express 安装
查看>>
android坐标
查看>>
flume-ng-elasticsearch 索引时间命名问题(时区和时间格式)
查看>>
hadoop出现ava.lang.ClassNotFoundException: org.codehaus.jackson.map.JsonMappingException
查看>>
转发参数包的例子
查看>>
PE文件结构学习
查看>>
[翻译] DDExpandableButton
查看>>
hdu---(5038)Grade(胡搞)
查看>>
pthread_setschedparam
查看>>
在对listctrl的控件进行重载的过程中,GetHeaderCtrl()返回NULL的问题
查看>>
WEB网站前端性能分析相关
查看>>
sql server2008系统表详细说明sys.开头的表
查看>>
Python基础(9)--正则表达式
查看>>
解决Installation error: INSTALL_FAILED_VERSION_DOWNGRADE错误
查看>>
os 计算机的启动
查看>>