Sar*_*our 6 javascript safari freeze ios angularjs
我们的Angular.js Web App有时会在iOS8 Safari上冻结.发生此问题时,不会触发ng-click回调.如果你用普通的javascript onclick替换ng-click,那就行了.在iOS8设备上的Chrome中不会发生这种情况.
还有其他人在iOS8 Safari上注意到这个问题还是有修复方法?
这个简单的视图有时会在iOS8 Safari中冻结.当您打开选项卡,转到浏览器上的其他选项卡或者保留浏览器体验并稍后返回时,通常会发生冻结.在此示例中,当点击链接时视图冻结tapCount不会增加.视图越复杂,冻结就越容易.在此示例中,当我快速点击链接时,浏览器将冻结几秒钟.通常,在真实复杂的视图上冻结需要更长
var app = angular.module('myApp', []);
app.controller('freezeCtrl', function($scope) {
$scope['tapCount'] = 0;
$scope['dummyItems'] = [];
for(var i = 0; i < 15; i++) {
var anItem = {'id': i};
($scope['dummyItems']).push(anItem);
}
$scope['updateTapCount'] = function() {
$scope.tapCount += 1;
};
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="freezeCtrl">
<p>Tap Count = {{tapCount}}</p>
<ul>
<li ng-repeat="item in dummyItems" bindonce>
<p>This is a dummy item #{{item.id}}</p>
</li>
</ul>
<div>
<button ng-click="updateTapCount()">Button 1</button>
<button ng-click="updateTapCount()">Button 2</button>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我找到了解决方案,而且似乎我在其他人修复 Angular 中的错误时就找到了解决方案!它已在 Angular 1.3.x 中修复。
该错误位于 angular.js 代码中的“isArrayLike”处。有时,在赋值“var length = obj.length;”后,obj.length 未定义 变量长度的值为“1”。这将导致 isArrayLike 对于不是 arrayLike 的对象返回 true。这个错误尤其会破坏 Angular 的 forEach 以及随后的 JQLite 的“eventHandler”。因此,当发生这种情况时,不会执行任何事件处理程序。
归档时间: |
|
查看次数: |
1725 次 |
最近记录: |