【问题标题】:Angular 4 app not working on IE11 and edgeAngular 4 应用程序无法在 IE11 和 edge 上运行
【发布时间】:2018-02-27 16:30:28
【问题描述】:

我正在开发 Angular 4 应用程序,它在除 IE11 和 Edge 之外的所有浏览器上都能正常工作,我检查了解决方案并添加了 es15 支持并添加了 polyfills 以支持 IE,但它仍然无法正常工作。

问题:第一次在 IE 上不加载,在几次刷新后加载但不完全。

我已经完成了 here 提到的 polyfill 修复

任何帮助都是可观的

谢谢

【问题讨论】:

标签: angular polyfills


【解决方案1】:

在尝试了不同的方法和模块后,我最终得到了以下解决方案,使 Angular 4 应用程序在所有浏览器上都兼容。

* 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/weak-map';
import 'core-js/es6/set';
import 'core-js/es6/reflect';
import 'core-js/client/shim';

/** 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`.

/** 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
*/

/* polyfill ie11 */
import 'core-js/es7/array';
import 'core-js/es7/reflect';

/**
 * Date, currency, decimal and percent pipes.
 * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
 */
// Run `npm install --save intl`.
import 'intl'; 
import 'intl/locale-data/complete.js';
import 'intl/locale-data/jsonp/en.js';

if (typeof SVGElement.prototype.contains == 'undefined') {
    SVGElement.prototype.contains = HTMLDivElement.prototype.contains;
}

根据您在项目中安装的模块,您可能需要其他一些 polyfill,例如少数图表和图形有时需要一些额外的配置。

【讨论】:

    【解决方案2】:

    我在使用 edge 时遇到了同样的问题。添加所有必要的 polyfill 后,我的网站没有加载到边缘。

    我发现[hidden] 属性在 Edge 中的网页上呈现内容时存在一些问题(因为它在 Google Chrome、Mozilla、IE 中工作得非常好),并且在删除该属性网站后在 Edge 中加载得非常好。

    所以我不使用[hidden],而是使用*ngIf 来显示和隐藏内容。

    我发现这在 Microsoft Edge 中不起作用的可能原因是:-

    hidden 全局属性是一个布尔属性,表示该元素尚未或不再相关。因此,浏览器不会渲染带有 hidden 属性集的元素。

    浏览器将“display: none”样式附加到具有隐藏属性的元素。 并且当组件加载时,样式“display: none”不会自动更新。

    并且*ngIf 不会根据显示属性(如隐藏)显示/隐藏元素。它通过在 DOM 中添加和删除元素来工作。

    【讨论】:

      猜你喜欢
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 2021-08-24
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      相关资源
      最近更新 更多