Javascript IE 11浏览器中出错-异常:对象不';t支持属性或方法';匹配',其他浏览器它工作正常

Javascript IE 11浏览器中出错-异常:对象不';t支持属性或方法';匹配',其他浏览器它工作正常,javascript,angular,typescript,internet-explorer,Javascript,Angular,Typescript,Internet Explorer,在我的例子中,该网页在firefox和chrome浏览器中运行良好,但在IEV.11中显示错误为。这个错误出现在IE11的开发者工具中。该错误不允许打开特定链接,单击该链接会显示以下错误 polyfills.ts- * BROWSER POLYFILLS */ /** IE9, IE10 and IE11 requires all of the following polyfills. **/ import 'core-js/es6/symbol'; import 'core-js/es6

在我的例子中,该网页在firefox和chrome浏览器中运行良好,但在IEV.11中显示错误为。这个错误出现在IE11的开发者工具中。该错误不允许打开特定链接,单击该链接会显示以下错误

polyfills.ts-

* BROWSER POLYFILLS
 */

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/set';

/** IE10 and IE11 requires the following for NgClass support on SVG elements */
import 'classlist.js';  // Run `npm install --save classlist.js`.

/** IE10 and IE11 requires the following to support `@angular/animation`. */
 import 'web-animations-js';  // Run `npm install --save web-animations-js`.


/** Evergreen browsers require these. **/
import 'core-js/es6/reflect';
import 'core-js/es7/reflect';


/** ALL Firefox browsers require the following to support `@angular/animation`. **/
// import 'web-animations-js';  // Run `npm install --save web-animations-js`.



/***************************************************************************************************
 * Zone JS is required by Angular itself.
 */
import 'zone.js/dist/zone';  // Included with Angular CLI.



/***************************************************************************************************
 * APPLICATION IMPORTS
 */

/**
 * Date, currency, decimal and percent pipes.
 * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
 */
// import 'intl';  // Run `npm install --save intl`.
tsconfig.spec.json-

"compilerOptions": {
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "es2016"
    ],
    "outDir": "../out-tsc/spec",
    "module": "commonjs",
    "target": "es6",
    "baseUrl": "",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "test.ts"
  ],
  "include": [
    "**/*.spec.ts"
  ]
}
tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "target": "es5",
    "experimentalDecorators": true,
    "lib": [
      "es2015"
    ]
  }
}

看起来IE使用非标准名称()实现了
匹配
函数。该链接包括一个polyfill,它将定义
匹配
函数,以便可以在IE上使用。

在我将项目从Angular 5更新到6之后,我也面临同样的问题。在德里克·布朗的评论的帮助下,我找到了一个解决方案。解决方案是在
polyfill.ts
文件中添加以下内容:

if (!Element.prototype.matches) {
  Element.prototype.matches = Element.prototype.msMatchesSelector;
}

对于使用Angular 6和Angular 7(打字脚本)的用户,您应修改Sanjay Gupta的以下答案:

if (!Element.prototype.matches) {
  Element.prototype.matches = (<any>Element.prototype).msMatchesSelector ||
    Element.prototype.webkitMatchesSelector;
}
if(!Element.prototype.matches){
Element.prototype.matches=(Element.prototype).msMatchesSelector||
Element.prototype.webkitMatchesSelector;
}

强制转换(嗯,实际上是非类型化)允许transpiler解析未定义的方法。

我认为窗口带红色下划线的事实与您遇到的错误无关。您能发布一份您的typescript配置的副本吗,以及您正在使用的任何多边形填充?@DerekBrown肯定会在问题描述中更新。@DerekBrown我能够通过以下方式消除红色下划线问题。所以现在我没有任何window.onload问题。但仍然在IE11中,我确实有这个错误。@DerekBrown-我找到了一些链接,但不知道在哪里使用它,以及如何在这个问题上使用它,这是前缀ms matchselector,所以在polyfills.ts中,我应该在哪里添加匹配函数,就在现有的polyfill导入下面应该可以。您能告诉我语法吗,因为它在这里显示错误为“找不到元素”。因此,我已经在其他导入下面包含了polyfill-if(!element.prototype.matches)Element.prototype.matches=Element.prototype.msMatchesSelector | | Element.prototype.webkitMatchesSelector;但是它有一条红色的下划线,上面写着“元素上不存在属性匹配”@stec1如果你还在阅读,我在下面提供了一个答案,它解决了typescript中的问题(鉴于你得到的错误,我想你正在使用它)其他信息:这个代码片段(值得赞扬的)似乎是基于。