修改:这似乎与Chrome v43有关,我降级为v42,一切正常。
修改:我已经在Angular的Github回购中提交了issue。
似乎错误被抛出了
angular.js source中的return logFn.apply(console, args);
行12221
。
关于现在该做什么的任何提示?
我尝试将我的应用从AngularJS v1.2迁移到v1.3或v1.4,但我在Chrome上获得TypeError: Illegal invocation
(尝试过win,osx和ubuntu)。
堆栈跟踪并非真正有用:
TypeError: Illegal invocation
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at Scope.$get.Scope.$digest (angular.js:15550)
at Scope.$get.Scope.$apply (angular.js:15824)
at done (angular.js:10263)
at completeRequest (angular.js:10435)
at XMLHttpRequest.requestLoaded (angular.js:10376)
所以这似乎与AJAX请求有关,但我也得到了:
TypeError: Illegal invocation
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at Scope.$get.Scope.$digest (angular.js:15550)
at Scope.$get.Scope.$apply (angular.js:15824)
at tick (angular.js:10983)
我使用$interval
更新模型类(这是一个工厂,通过将$scope.client
设置为此类来反映在视图中):
var runTimer = function () {
self.timeOnline = time(self.timeSoFar);
self.timeSoFar = Date.now() / 1000 - self.alarmTriggeredTime;
};
$interval(runTimer, 1000);
我认为$digest/$apply
存在问题。我花了好几个小时调试这个,但仍然没有找到发生了什么的线索。
非常感谢任何进一步调试的指示。
答案 0 :(得分:2)
在angular-issue,chromium-bug,webkit-bug和(我甚至不知道这是什么)something-Webkit-issue之间,它会出现好像每个人(好吧,大多数人都是)在空中投掷手。也许我说这是一种判断/明显的错误。
无论如何,我无法让window.history.back
案例在没有Illegal Invocation
的情况下进行记录,但我可以使用以下“代码段”{/ 1}来console.log.call(window, 'x')
>
(function() { console.log = console.log.bind(console); }());
(直接从那里的最后一个链接,感谢Brian!)
只需将HTML文件放在HTML文档的顶部/我想要的地方(我猜)。
我超级好奇,如果你要运行@Ignas会发生什么。我似乎无法复制你提出的Factory绑定问题到$scope
并运行你的$interval
。
我很想看看它是否有任何效果(虽然不是功能性的,但更多的是装饰),我猜想。
旁注; 我是我的新手,我的同事告诉我,console.log.call(窗口)确实会抛出非法调用错误,因此这是一个非问题的问题。仍然好奇这是否会对Angular内的logFn
产生影响。