0

「TypeError: オブジェクトはこのアクション未定義をサポートしていません」Angular アプリを実行しようとすると、IE8 のコンソールにメッセージが表示されます。そして、Angular は実行すべきことを何も実行しません。誰でもこの問題を解決するためのヒントがありますか? json2 と ui-ieshiv は既に含めています。私はまた、この方法でhtmlタグを書きました:

<html xmlns:ng="http://angularjs.org" class="ng-app:app" ng-app="app" id="ng-app">

ではごきげんよう!

4

2 に答える 2

9

angularアプリをIE8で実行したときに、IE8が気に入らなかったことが3つありました。

1) console.log 関数。angularがブートストラップされる前に、このjavascriptをページに配置する必要がありました。

// Avoid `console` errors in browsers that lack a console.
            (function() {
                var method;
                var noop = function () {};
                var methods = [
                    'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
                    'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
                    'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
                    'timeStamp', 'trace', 'warn'
                ];
                var length = methods.length;
                var console = (window.console = window.console || {});

                while (length--) {
                    method = methods[length];

                    // Only stub undefined methods.
                    if (!console[method]) {
                        console[method] = noop;
                    }
                }
            }());

2) toISOString 関数

 /*IE8 toISOString hack */
            if (!Date.prototype.toISOString) {
                Date.prototype.toISOString = function() {
                    function pad(n) { return n < 10 ? '0' + n : n }
                    return this.getUTCFullYear() + '-'
                        + pad(this.getUTCMonth() + 1) + '-'
                        + pad(this.getUTCDate()) + 'T'
                        + pad(this.getUTCHours()) + ':'
                        + pad(this.getUTCMinutes()) + ':'
                        + pad(this.getUTCSeconds()) + '.'
                        + pad(this.getUTCMilliseconds()) + 'Z';
                };
            }

3) forEach 関数

  /*IE8 hack to support forEach */
            if (!Array.prototype.forEach) {
              Array.prototype.forEach = function(fn, scope) {
                for(var i = 0, len = this.length; i < len; ++i) {
                  fn.call(scope, this[i], i, this);
                }
              }
            }

私はこれを自分で書いていないことに注意してください.. SOから「採掘」しました。

これらは、IE8 で実行するために修正しなければならなかった原因です。今、それはうまく動作します。

于 2013-08-23T21:02:09.367 に答える
0

問題は解決しました! IE8 とプラグイン Angular-Restful の間に問題が見つかりました。私がそれを取り除いたとき、私のアプリは再び機能します。

于 2013-09-17T18:43:32.280 に答える