如何让 Angular 在 HTA 运行 IE 9 中工作?
How do I get Angular working in an HTA running IE 9?
我需要在引擎盖下开发一个 HTML application (HTA) to solve a business problem. I consider that using Angular 将大大简化开发。
我通过 ng new
创建了一个新的 Angular 项目并做了一些小改动(详见下文),但是当我 运行 构建的 HTA 文件时,我得到这个错误:
Error: 'console' is undefined
并且该页面从不在 HTA 中加载 window。
HTA 使用 IE 9(应用程序的要求不允许使用更高版本的浏览器),因此应用程序包含此元标记:
<meta http-equiv="X-UA-Compatible" content="IE=9">
Angular's documentation states that IE 9 is supported 如果我在 polyfills.ts
中取消注释所有必要的 polyfill,我已经完成了:
/** 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';
我已将包含的 index.html
文件重命名为 index.hta
并在 .angular-cli.json
中进行了相应的更改。
我试过将下面的代码直接放到polyfills.ts
中来规避缺失的console
:
if (!window.console) console = {error: function() {}};
但是我根本无法构建,因为它不喜欢我重新定义 console
:
ERROR in src/polyfills.ts(77,22): error TS2322: Type '{ error: () => void; }' is not assignable to type 'Console'.
Property 'assert' is missing in type '{ error: () => void; }'.
有人可以从这里提出前进的方向吗?
我通过在 index.hta
的 <app-root></app-root>
行下添加以下代码解决了这个问题:
<script>
// HTAs don't have a console.
console = {};
</script>
我现在收到“欢迎使用应用程序!”当我双击 HTA 文件时出现的屏幕。
看来 Angular 的构建过程并没有像主页中声明的 JavaScript 那样仔细。
我需要在引擎盖下开发一个 HTML application (HTA) to solve a business problem. I consider that using Angular 将大大简化开发。
我通过 ng new
创建了一个新的 Angular 项目并做了一些小改动(详见下文),但是当我 运行 构建的 HTA 文件时,我得到这个错误:
Error: 'console' is undefined
并且该页面从不在 HTA 中加载 window。
HTA 使用 IE 9(应用程序的要求不允许使用更高版本的浏览器),因此应用程序包含此元标记:
<meta http-equiv="X-UA-Compatible" content="IE=9">
Angular's documentation states that IE 9 is supported 如果我在 polyfills.ts
中取消注释所有必要的 polyfill,我已经完成了:
/** 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';
我已将包含的 index.html
文件重命名为 index.hta
并在 .angular-cli.json
中进行了相应的更改。
我试过将下面的代码直接放到polyfills.ts
中来规避缺失的console
:
if (!window.console) console = {error: function() {}};
但是我根本无法构建,因为它不喜欢我重新定义 console
:
ERROR in src/polyfills.ts(77,22): error TS2322: Type '{ error: () => void; }' is not assignable to type 'Console'.
Property 'assert' is missing in type '{ error: () => void; }'.
有人可以从这里提出前进的方向吗?
我通过在 index.hta
的 <app-root></app-root>
行下添加以下代码解决了这个问题:
<script>
// HTAs don't have a console.
console = {};
</script>
我现在收到“欢迎使用应用程序!”当我双击 HTA 文件时出现的屏幕。
看来 Angular 的构建过程并没有像主页中声明的 JavaScript 那样仔细。