首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pace.js在IE 11中不起作用

Pace.js在IE 11中不起作用
EN

Stack Overflow用户
提问于 2017-10-17 20:46:04
回答 2查看 1.1K关注 0票数 4

我有一个angular-cli项目。我还增加了速度。我在index.html <script src="assets/lib/pace/pace.min.js"></script>的头中添加了它。它在chrome中工作正常,但在IE-11中我得到了以下错误:

代码语言:javascript
复制
ERROR TypeError: Invalid calling object
      stack: "TypeError: Invalid calling object
   at scheduleTask (http://localhost:4200/polyfills.bundle.js:8607:13)
   at ZoneDelegate.prototype.scheduleTask (http://localhost:4200/polyfills.bundle.js:6279:21)
   at DELEGATE_ZS.onScheduleTask (http://localhost:4200/polyfills.bundle.js:6169:13)
   at ZoneDelegate.prototype.scheduleTask (http://localhost:4200/polyfills.bundle.js:6273:17)
   at Zone.prototype.scheduleTask (http://localhost:4200/polyfills.bundle.js:6104:17)
   at Zone.prototype.scheduleMacroTask (http://localhost:4200/polyfills.bundle.js:6127:13)
   at Anonymous function (http://localhost:4200/polyfills.bundle.js:8637:17)
   at proto[name] (http://localhost:4200/polyfills.bundle.js:7142:17)
   at Anonymous function (http://localhost:4200/vendor.bundle.js:63666:13)
   at Observable.prototype._trySubscribe (http://localhost:4200/vendor.bundle.js:4172:13)",
      Symbol(observable)_h.fo48yw1o6i8: undefined,
      Symbol(rxSubscriber)_g.fo48yw1o6i8: undefined

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2017-12-04 23:25:12

pace与zone.js v0.8.12中的更改之间存在冲突-详细信息请参见下面的内容。为了解决这个问题,我确保在加载zone.min.js和其他IE polyfills之后加载pace.min.js,它的效果非常好。

https://github.com/HubSpot/pace/issues/399

代码语言:javascript
复制
In the newest version of zone.js (0.8.12) using pace with it causes all XMLHttpRequests to fail with the error message:

TypeError: Unable to get property 'apply' of undefined or null reference
Please see my issue for more information. If I get time I'll try and fix the issue inside pace itself but I've already spent the good part of 3-4 hours trying to debug this issue so we'll see..

https://github.com/angular/zone.js/issues/816

代码语言:javascript
复制
After updating zone.js to the latest version (0.8.12) we started getting errors when loading an Angular page with angular/http calls in Internet Explorer 11 (works fine in Chrome). The request never initiates and there are a few errors in the console:

Unhandled Promise rejection: Unable to get property 'apply' of undefined or null reference ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Unable to get property 'apply' of undefined or null reference TypeError: Unable to get property 'apply' of undefined or null reference
at scheduleTask (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:142795:13)
at ZoneDelegate.prototype.scheduleTask (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:140947:21)
at Zone.prototype.scheduleTask (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:140772:17)
at Zone.prototype.scheduleMacroTask (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:140795:13)
at Anonymous function (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:142824:17)
at proto[name] (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZ
After digging around a bit, it looks like a very new bit of code could be causing this, introduced in PR #800

The exact line of failure is below, where oriAddListener is undefined, causing the above error :

oriAddListener.apply(data.target, ['readystatechange', newListener]); // line 110
Rolling zone.js back to 0.8.11 which was before that PR fixes the issue and works as expected.
票数 2
EN

Stack Overflow用户

发布于 2019-06-06 18:00:27

正如@Dovev Hefetz所建议的,并在这个git线程中讨论,似乎可以肯定的是,在这种情况下,脚本加载的顺序会影响IE的行为。对于那些不确定如何在angular中的主脚本之后加载pace.min.js的人,请遵循以下简单的步骤。

确保将package.json中的zone.js更改为

  • index.html中删除单个导入:

<script src="/pace/pace.js"></script> <link href="/pace/themes/pace-theme-barber-shop.css" rel="stylesheet" />

  • In你的angular(-cli).json

代码语言:javascript
复制
1. Include _pace-theme_.css in the **styles** 

"styles": [ "src/assets/plugins/pace/pace-theme-flash.css", "src/styles.scss" ],

代码语言:javascript
复制
1. Include **pace.min.js** in the scripts

"scripts": [ "src/assets/plugins/pace/pace.min.js" ]

  • 就是这样!这应确保在zone.js

之后加载pace

的好处: Angular支持现代浏览器和and浏览器。为了最大限度地利用它提供的功能,您的项目需要额外的小调整来支持一些库。一个很好的起点就是查看这个很棒的post

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46790493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档