博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
分子图形学(转载自维基,英文)
查看>>
分子图形系统介绍 - 不断更新中
查看>>
MVP框架 – Ted Mosby的软件架构
查看>>
java程序员菜鸟进阶(九)windows下搭建SVN服务器及配置myeclipse SVN客户端
查看>>
C#基础蛋疼到爆的Byte类型表数范围之网兜毛衣见解……
查看>>
技术走向管理一些思考(3)-知识工作者的管理
查看>>
关于栈及其应用演示样例
查看>>
2017-4-20 ADO.NET 实体类 数据访问类
查看>>
jQuery插件AjaxFileUpload实现ajax文件上传
查看>>
Linux服务器安装jdk+tomcat
查看>>
linux下du命令详解
查看>>
变革源自放弃
查看>>
MariaDB 10之TokuDB存储引擎
查看>>
Tip:Exchange 2010服务器激活
查看>>
6426C Lab4 部署和配置LDS
查看>>
2011年度十大杰出IT博客获奖感言
查看>>
网综同质化的这一年,为何“剧情式”会胜出?
查看>>
产业化已成趋势 云计算迎来拐点
查看>>
AD域中客户端时间与服务器时间不同步的解决办法
查看>>
Windows Server 2008 AD R2 AD回收站恢复删除用户两种方法的比较
查看>>