gpt4 book ai didi

javascript - Angular.js 移动浏览器应用程序在 iOS 8 Safari 上卡住

转载 作者:可可西里 更新时间:2023-11-01 03:57:57 27 4
gpt4 key购买 nike

我们的 Angular.js Web 应用有时会在 iOS8 Safari 上卡住。发生此问题时,不会触发 ng-click 回调。如果您将 ng-click 替换为常规的 javascript onclick,它将起作用。在 iOS8 设备上的 Chrome 中不会发生这种情况。

有没有其他人在 iOS8 Safari 上注意到这个问题或有解决办法?

这个简单的 View 有时会在 iOS8 safari 上卡住。卡住通常发生在您打开选项卡、转到浏览器上的其他选项卡或可能离开浏览器体验并稍后返回时。在此示例中,当点击链接时 View 卡住时,tapCount 不会增加。 View 越复杂,它就越容易卡住。在此示例中,当我快速点击链接时,浏览器会卡住几秒钟。通常在真正复杂的 View 上卡住需要更长的时间。

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;
};
});
<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>

最佳答案

我找到了解决方案,而且好像我在其他人修复 Angular 中的错误时就找到了解决方案!它已在 Angular 1.3.x 中修复。

错误出现在 angular.js 代码中的“isArrayLike”处。有时 obj.length 在赋值“var length = obj.length;”后未定义。可变长度获得值“1”。这将导致 isArrayLike 对于不是 arrayLike 的对象返回 true。这个 bug 尤其会破坏 angular 的 forEach 和随后的 JQLite 的“eventHandler”。因此,当发生这种情况时,不会执行任何事件处理程序。

关于javascript - Angular.js 移动浏览器应用程序在 iOS 8 Safari 上卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29995024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com