使用 IE 11 的 Angular 4 应用程序“无法从释放的脚本执行代码”

2024-01-02

我有一个 Angular 应用程序,我认为它是版本 4。 IE 11 在此应用程序中的登录序列期间崩溃:“无法从释放的脚本执行代码”。根据 IE 控制台,错误发生在 polyfills 包的第 10939 行(“var testString = delegate.toString()”),如下所示:

  var checkIEAndCrossContext = function (nativeDelegate, delegate, target, args) {
    if (!isDisableIECheck && ieOrEdge) {
        if (isEnableCrossContextCheck) {
            try {
                var testString = delegate.toString();
                if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {
                    nativeDelegate.apply(target, args);
                    return false;
                }
            }
            catch (error) {
                nativeDelegate.apply(target, args);
                return false;
            }
        }
        else {
            var testString = delegate.toString();   // <===== HERE!
            if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {
                nativeDelegate.apply(target, args);
                return false;
            }
        }
    }
    else if (isEnableCrossContextCheck) {
        try {
            delegate.toString();
        }
        catch (error) {
            nativeDelegate.apply(target, args);
            return false;
        }
    }
    return true;
};

我认为这是来自 polyfills 文件中的这一行:

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

这是来自有关 zone.js 的“package.json”:

"zone.js": "^0.8.4"

polyfill.ts 文件:

/**
 * This file includes polyfills needed by Angular and is loaded before the app.
 * You can add your own extra polyfills to this file.
 *
 * This file is divided into 2 sections:
 *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
 *   2. Application imports. Files imported after ZoneJS that should be loaded before your main
 *      file.
 *
 * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
 * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
 * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
 *
 * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
 */

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

/** 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`.
/**
 * Need to import at least one locale-data with intl.
 */
// import 'intl/locale-data/jsonp/en';

import 'hammerjs/hammer';

在这种情况下,你建议我做什么?


一种解决方案是设置变量isEnableCrossContextCheck设置为 true,以便 IE 应该运行包含 try/catch 块的代码,该代码可以处理错误。

        if (isEnableCrossContextCheck) {
            try {
                var testString = delegate.toString();
                if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {
                    nativeDelegate.apply(target, args);
                    return false;
                }
            }
            catch (error) {
                nativeDelegate.apply(target, args);
                return false;
            }
        }
        else {
            var testString = delegate.toString(); 
            if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {
                nativeDelegate.apply(target, args);
                return false;
            }
        }

这篇文章展示了如何做到这一点:

Angular 4 为 zone.js 提供了一个全局常量 https://stackoverflow.com/questions/45691804/angular-4-put-a-global-constant-available-to-zone-js/45693219?noredirect=1#comment78345629_45693219

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 IE 11 的 Angular 4 应用程序“无法从释放的脚本执行代码” 的相关文章

随机推荐

  • Delphi 同步滚动组件

    我正在尝试同步 VCL Forms 应用程序中两个 TDBGrid 组件的滚动 但在没有堆栈问题的情况下拦截每个网格组件的 WndProc 时遇到困难 我尝试在滚动事件下发送 WM VSCROLL 消息 但这仍然导致错误的操作 它需要用于单
  • 如何禁用 UIPickerView (Swift)?

    我想禁用 UIPickerView 但将其设置为 isEnabled false 不起作用 不 我不想在使用视图时禁用它 而是无法滚动视图 直到完成某个操作才能重新启用它 我在这里尝试的代码不起作用 它甚至可能不是快速代码 如何禁用 UIP
  • 尝试理解 Ember JS 的承诺

    我一直在尝试编写一个代码示例来理解承诺 但我似乎无法弄清楚如何处理回调并稍后获取 thenable 值 以下是我正在研究的两个相关 JSBin 示例 以冗长的风格编写 以模仿烘焙饼干 没有异步的 Ember JS http jsbin co
  • 如何使用 jQuery 默认预加载所有选项卡

    如果我有 4 个选项卡 其中前 2 个使用 ajax 加载 后 2 个是静态的 那么默认情况下如何预加载 2 个 ajax 选项卡 目前 只有第一个选项卡会自动加载 第二个选项卡会在单击时加载 我希望它们都被加载 这样当我单击第二个时 内容
  • 如何在客户端生成JSON

    在项目中 我必须将复杂的 JSON 命令从服务器发送到客户端 生成 JSONObjects 字符串 数字等 将它们转换为字符串然后通过 RequestBuilder 发送它们是否有效 或者是否有更有效的方法 将 JSON 对象转换为字符串是
  • 监听多个事件

    如何在事件驱动架构中处理相关事件 具体来说 如果必须触发多个事件才能执行某些操作怎么办 例如 我有一个监听两个事件的微服务foo and bar并且仅当两个事件到达并且具有相同的相关 ID 时才执行操作 一种方法是在微服务内部保留一个内部数
  • 如何使用 PHP/HTML 保持空白格式?

    我正在解析文件中的文本并将其存储在字符串中 问题是原始文件中的某些文本包含ASCII art以及我想保留的东西 当我打印出字符串HTML page 即使它确实具有相同的格式和所有内容 因为它是HTML 不保留间距和换行符 打印文本的最佳方式
  • 在反应路由器中刷新时出现空白页面

    当我从 home 导航到 dashboard 时 路由器工作正常 但是当我从 home 导航到 profile id 时 路由器将我导航到也工作正常的配置文件页面 但是当我刷新它时 它会变成空白页面并且没有给我任何 404 或重定向回主页
  • Zend 表单编辑和 Zend_Validate_Db_NoRecordExists

    我正在通过构建一些供我自己使用的实用程序网站来慢慢增强我的 Zend 技能 我一直在使用 Zend Forms 和表单验证 到目前为止 我很高兴我已经了解了 Zend 的做事方式 然而 我对如何在编辑表单和映射到必须唯一的数据库列的字段的上
  • Cocoapods ld:找不到 -lPods-Projectname 的库

    我已经通过它安装了 cocoa pods 库和一些框架 现在 当我编译项目时 构建失败 错误 ld 找不到 lPods Project 的库 clang 错误 链接器命令失败 退出代码为 1 使用 v 查看调用 这里是部分文字 Ld Use
  • Expressjs:搜索查询 api

    我想使用查询字符串搜索我的用户存储库 这应该返回具有相似用户名 kyogron 和相似电子邮件 kyogron gmail 的所有用户 GET localhost 3000 users username kyogron email prot
  • 运行异步代码的 Windows 服务不等待工作完成

    In Brief 我有一个 Windows 服务 它可以并行执行多个作业作为异步任务 然而 当 OnStop 被调用时 似乎这些都被立即终止 而不是被允许以更优雅的方式停止 更详细 每个作业都代表工作的迭代 因此完成工作后 该作业需要再次运
  • 无法安装分发配置文件

    我想向 AppStore 提交一个应用程序 我的第一个应用程序 我已经在我的设备中测试了该应用程序 因此我已经有了开发配置文件 但我无法在 Xcode 中安装分发配置文件 我已按照该过程操作 我不知道多少次 但是当我尝试通过管理器添加配置文
  • 如何避免 Struts2 验证

    我有一个index jsp我从中调用一个动作类TestAction 单击超链接 其中有方法 显示 从数据库加载组合框的值以及执行方法 以显示在页面上test jsp On test jsp 我有一些输入字段和组合框 单击 test jsp
  • PHP 中单引号和双引号字符串有什么区别?

    我有点困惑为什么我在 PHP 中看到一些代码 其中的字符串放在单引号中 有时放在双引号中 我只知道在 NET或者C语言中 如果它是在单引号中 那就意味着它是一个字符 而不是一个字符串 Answer recommended by PHP co
  • 如何查明“svn up”是否成功完成?

    I run sudo svn username radek update codebase force 每天晚上在自动化测试开始之前从我的 php 脚本 在 SuSE 上 获取 因此 测试是在今天签入的最新代码上完成的 我怎么能确定知道sv
  • Gradle 无法解决 Android Studio 中的依赖关系

    我在 Android Studio 中导入了一个 Phonegap 项目 并将其设为基于 Gradle 的项目 现在我正在尝试编译一些外部依赖项 但出现此错误 错误 72 13 无法解析 com loopj android android
  • 类型“typeof“http””上不存在属性“服务器”

    我知道var someModule require someModule 一般被替换为import as someModule from someModule 但我不知道如何使用 Typescript ES6 语法来表达以下 Node js
  • 在 C# 中重置 IronScheme 引擎

    有没有办法 重置 IronScheme 引擎 我的本质目标是确保对 string Eval 的连续调用是独立执行的 例如 我想被执行 define x 1 0 x 5 0 Eval 然后重置并通话 x 3 0 Eval 失败就像它自己执行一
  • 使用 IE 11 的 Angular 4 应用程序“无法从释放的脚本执行代码”

    我有一个 Angular 应用程序 我认为它是版本 4 IE 11 在此应用程序中的登录序列期间崩溃 无法从释放的脚本执行代码 根据 IE 控制台 错误发生在 polyfills 包的第 10939 行 var testString del