рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░рд▓ HTML рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.16/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.16/angular-route.js"></script>
<script>
angular.module('fail', ['ngRoute'])
.config(function($routeProvider) {
$routeProvider
.when('/a', {
template: '<a ng-href="#/b">a</a>'
})
.when('/b', {
template: '<a ng-href="#/a">b</a>'
})
.otherwise({
redirectTo: '/a'
});
});
</script>
</head>
<body ng-app="fail">
<div ng-view></div>
</body>
</html>
рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдИрдУрдПрд╕ 9 рдкрд░ рдПрдХ рдЕрдирдВрдд рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред
рдореИрдВ рдЖрдИрдУрдПрд╕ 9 рдмреАрдЯрд╛ 2 рдХреЗ рд╕рд╛рде рдЖрдИрдкреИрдб рдПрдпрд░ 2 рдФрд░ рдЖрдИрдкреИрдб рдЪреМрдереА рдкреАрдврд╝реА рджреЛрдиреЛрдВ рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред
рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдЖрдИрдУрдПрд╕ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рд╕реЗ рдорд┐рд▓рд╛, рдЬреЛ рдЖрдИрдУрдПрд╕ 9 рдкрд░ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдареАрдХ рдЪрд▓рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ 1.4.1 / ios 9 рдкрд░ рд╕реИрдВрдЯрд╛рд╕реНрд▓реЛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдорд╛рди рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛:
<!DOCTYPE html>
<html>
<head>
<script src="../static/js/angular/angular.1.4.1.js"></script>
<script src="../static/js/angular-route/angular-route.1.4.1.js"></script>
<script>
angular.module('fail', ['ngRoute'])
.config(function ($routeProvider) {
$routeProvider
.when('/a', {
template: '<a ng-href="#/b">a</a>'
})
.when('/b', {
template: '<a ng-href="#/a">b</a>'
})
.otherwise({
redirectTo: '/a'
});
}).factory('$exceptionHandler', ['$log', function($log) {
return function(exception, cause) {
var message = 'angularjs exception: '+exception.message+': caused by "' + cause+ '\njs stack:\n'+exception.stack;
$log.error(message);
};
}]);
</script>
</head>
<body ng-app="fail">
<div ng-view></div>
</body>
</html>
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ 8 рд╡реЗрдмрд╡реНрдпреВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ 9 рдкрд░ рдЬрдм рдореИрдВ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛
2015-07-02 11:00:09 ... angularjs exception: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
http://errors.angularjs.org/1.4.1/$rootScope/infdig?p0=10&p1=%5B%5D: caused by "undefined
js stack:
file:///.../static/js/angular/angular.js:68:32
$digest<strong i="10">@file</strong>:///.../static/js/angular/angular.js:15705:35
$apply<strong i="11">@file</strong>:///.../static/js/angular/angular.js:15935:31
file:///.../static/js/angular/angular.js:12070:30
eventHandler<strong i="12">@file</strong>:///.../static/js/angular/angular.js:3264:25
рдореИрдВ рдЕрдм iOS 9 рдмреАрдЯрд╛ 3 рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдореБрдЭреЗ ios9 рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреАрдЯрд╛ (13A4293g) рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ
рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ ios 9 рдмреАрдЯрд╛ 3 (13A4293g) рдкрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛, рдЕрдм рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдПрдирдЬреА-рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдРрдк рдЕрднреА рднреА рдЖрдИрдУрдПрд╕ 9 рдмреАрдЯрд╛ 3 рдкрд░ рдЗрдВрдлрдбрд┐рдЧ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред
рдореБрдЭреЗ ios9 рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреАрдЯрд╛ (13A4293g) рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ
рддреНрд░реБрдЯрд┐: [$ rootScope: infdig ] 10 $digest() рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ред рдЧрд░реНрднрдкрд╛рдд!
рдкрд┐рдЫрд▓реЗ рел рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкрд╣рд░реЗрджрд╛рд░реЛрдВ рдиреЗ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛: []
http://errors.angularjs.org/1.3.13/ $rootScope/infdig?p0=10&p1=%5B%5D
рдлрд╝рд╛рдЗрд▓:///рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдореИрдХ5/рд▓рд╛рдЗрдмреНрд░реЗрд░реА/рдбреЗрд╡рд▓рдкрд░/рдХреЛрд░рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░/рдбрд┐рд╡рд╛рдЗрд╕/749DE7E3-D93F-47F9-A1FC-E3D54A1CCEEE/рдбреЗрдЯрд╛/рдХрдВрдЯреЗрдирд░/рдмрдВрдбрд▓/рдПрдкреНрд▓рд┐рдХреЗрд╢рди/9B5EE368-F2A0-4C99-807B-EA17B2479E58/www /lib/ionic/js/ionic.bundle.js:8762:32
$digest@file :///Users/mac5/Library/Developer/CoreSimulator/Devices/749DE7E3-D93F-47F9-A1FC-E3D54A1CCEEE/data/Containers/Bundle/Application/9B5EE368-F2A0-4C99-807B-EA17Bshop. рдРрдк/www/lib/ionic/js/ionic.bundle.js:22980:35
$apply@file : /// рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/mac5/рд▓рд╛рдЗрдмреНрд░реЗрд░реА/рдбреЗрд╡рд▓рдкрд░/рдХреЛрд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░/рдбрд┐рд╡рд╛рдЗрд╕/749DE7E3-D93F-47F9-A1FC-E3D54A1CCEEE/рдбреЗрдЯрд╛/рдХрдВрдЯреЗрдирд░/рдмрдВрдбрд▓/рдПрдкреНрд▓рд┐рдХреЗрд╢рди/9B5EE368-F2A0-4C99-807B-EA17Bshop. рдРрдк/www/lib/ionic/js/ionic.bundle.js:23205:31
file:///Users/mac5/Library/Developer/CoreSimulator/Devices/749DE7E3-D93F-47F9-A1FC-E3D54A1CCEEE/data/Containers/Bundle/Application/9B5EE368-F2A0-4C99-807B-EA17B2479E58/www /lib/ionic/js/ionic.bundle.js:54879:24
eventHandler @file :///Users/mac5/Library/Developer/CoreSimulator/Devices/749DE7E3-D93F-47F9-A1FC-E3D54A1CCEEE/data/Containers/Bundle/Application/9B5EE368-F2A0-4C99-807B-EA17Bhops.app /www/lib/ionic/js/ionic.bundle.js:11713:25
рдбрд┐рд╕реНрдкреИрдЪрдЗрд╡реЗрдВрдЯ @ [рдореВрд▓ рдХреЛрдб]
рдЯреНрд░рд┐рдЧрд░рдорд╛рдЙрд╕рдЗрд╡реЗрдВрдЯ@рдлрд╝рд╛рдЗрд▓ : ///рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдореИрдХ5/рд▓рд╛рдЗрдмреНрд░реЗрд░реА/рдбреЗрд╡рд▓рдкрд░/рдХреЛрд░рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░/рдбрд┐рд╡рд╛рдЗрд╕/749DE7E3-D93F-47F9-A1FC-E3D54A1CCEEE/рдбреЗрдЯрд╛/рдХрдВрдЯреЗрдирд░/рдмрдВрдбрд▓/рдПрдкреНрд▓рд┐рдХреЗрд╢рди/9B5EE368-F2A0-4C99-807B-EA17B /www/lib/ionic/js/ionic.bundle.js:2863:20
TapClick@file :///Users/mac5/Library/Developer/CoreSimulator/Devices/749DE7E3-D93F-47F9-A1FC-E3D54A1CCEEE/data/Containers/Bundle/Application/9B5EE368-F2A0-4C99-807B-EA17B2479Eapp. /www/lib/ionic/js/ionic.bundle.js:2852:20
TapTouchEnd@file :///Users/mac5/Library/Developer/CoreSimulator/Devices/749DE7E3-D93F-47F9-A1FC-E3D54A1CCEEE/data/Containers/Bundle/Application/9B5EE368-F2A0-4C99-807B-EA17B /www/lib/ionic/js/ionic.bundle.js:2975:13
рд╣рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЖрдИрдУрдПрд╕ 9 рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреАрдЯрд╛ 3 рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдгреАрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рднреА рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд░рд╣реА рд╣реИред рдпрд╣ рдЖрдИрдУрдПрд╕ 8 рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ ng-view рдФрд░ angular-route.js рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдирд┐рд░реНрджреЗрд╢ рд▓рд┐рдЦрд╛ред рд╕рдорд╛рдзрд╛рди рдиреЗ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдЖрдИрдУрдПрд╕ 9 рдмреАрдЯрд╛/рдмреАрдЯрд╛ 3 рдкрд░ рд╕рднреА infdig рдЕрдкрд╡рд╛рдж рдЧрд╛рдпрдм рд╣реЛ рдЧрдПред рдиреАрдЪреЗ рд╕рд░рд▓реАрдХреГрдд рдХреЛрдб рд╣реИ, рдЬреЛ рд╕рд┐рд░реНрдл рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛:
(function (window) {
'use strict';
var myApp = angular.module("myApp");
var $route = {};
// replace $routeProvider.when with the function below:
window.routeWhen = function(path, route) {
$route[path] = route;
};
myApp.directive("myView", ['$compile', '$controller', '$http', '$rootScope', function ($compile, $controller, $http, $rootScope) {
return {
priority: -400,
link: function (scope, element) {
var parentScope = scope;
scope = null;
window.updateView = function (path) {
location.hash = '#'+url;
if (scope) scope.$destroy();
scope = parentScope.$new();
var route = $route[path];
var linkView = function(html) {
element.html(html);
var link = $compile(element.contents());
var controller = $controller(route.controller, {$scope: scope});
element.data('$ngControllerController', controller);
element.children().data('$ngControllerController', controller);
link(scope);
scope.$emit('$viewContentLoaded');
if (!$rootScope.$$phase && !scope.$$phase) scope.$apply();
};
if (route.templateCache) linkView(route.templateCache)
else if (route.template) {
route.templateCache = document.getElementById(route.template).innerHTML;
linkView(route.templateCache)
}
else $http.get(route.templateUrl;).success(function(html) {
route.templateCache = html;
linkView(html);
});
};
//updateView(initialPath);
// call updateView(path) to set location at other places of the app
}
};
}]);
})(window)
рдмрд╕ iOS 9 рдмреАрдЯрд╛ 4 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреЛрдИ рдФрд░?
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдИрдУрдПрд╕ 9 рдмреАрдЯрд╛ 3 рдореЗрдВ рджреЗрдЦрд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЕрднреА рднреА рдЖрдИрдУрдПрд╕ 9 рдмреАрдЯрд╛ 4 рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред
+1
рд╣рд╛рдБ, рд╣рдо рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреЛрдгреАрдп рдпреВрдЖрдИ рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рде рднреА рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдЗрд╕ рдмреАрдЪ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╡реИрдз рдХрд╛рдордХрд╛рдЬ рд╣реИ?
рдирд╡реАрдирддрдо iOS9 рдкрд░ uiWebView рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ?
рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рдкреБрди: рдЦреЛрд▓рдиреЗ рд╕реЗ
рдпрд╣ рдПрдХ рдЖрдИрдУрдПрд╕ рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕реЗ рд╡реЗрдмрдХрд┐рдЯ рдкрд░ рдХрд╣реАрдВ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
+1
+1
рдореБрдЭреЗ рднреАред рдЖрдИрдкреИрдб рд╕рдлрд╛рд░реА рдкрд░ рд╡реЗрдм рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рдиреЗ рдкрд░ рд╣рдорд╛рд░рд╛ рдХреЙрд░реНрдбреЛрд╡рд╛ рдРрдк рдареАрдХ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдирдВрдд рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдХреЙрд░реНрдбреЛрд╡рд╛ рдРрдк (UIWebView) рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред
рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬреИрд╕реЗ @borrull ! WKWebView рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕рдорд╕реНрдпрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо WKWebView рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕реЗрд╡рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдФрд░ рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдФрд░ рдХреБрдХреАрдЬрд╝ред рддреЛ рдЗрд╕реЗ рдЖрдИрдУрдПрд╕ 9 рдкрд░ рдХреЙрд░реНрдбреЛрд╡рд╛/рдореЛрдмрд╛рдЗрд▓ рд╕рдлрд╛рд░реА рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ UIWebView рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдгреАрдп рдореЗрдВ $ locationWatch рдбреАрдмрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд╛рди рдкрд░ рдХрдИ рдмрд╛рд░ рд╕рдВрдХреНрд░рдордг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ (10 рдмрд╛рд░ рдХреЗ рдмрд╛рдж) ) рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдПрд░рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
iOS9 рдмреАрдЯрд╛4 рдкрд░ рдпрд╣рд╛рдБ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ
рдХреЛрдгреАрдп рдЕрдирдВрдд $ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рд▓реВрдк ;(
+1, рдХреЗрд╡рд▓ UIWebView рдореЗрдВ, WKWebView рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрдкрдиреЗ рдХреЙрд░реНрдбреЛрд╡рд╛ рдРрдк рдореЗрдВ рдХреЗрд╡рд▓ UIWebView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
+1
рдпрджрд┐ рдпрд╣ рдПрдХ рдЖрдИрдУрдПрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╡реЗрдмрдХрд┐рдЯ рдЗрд╢реНрдпреВ рдЯреНрд░реИрдХрд░ рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдбреЗрдореЛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ! +1 рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдЧ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдмрдЧ рдХреА рд╕реВрдЪрдирд╛ Apple рдХреЛ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рджреА рдереА?
рдореИрдВрдиреЗ рд╕реЗрдм рдХреЛ рдЗрд╕ рдмрдЧ рдХреА рд╕реВрдЪрдирд╛ рджреАред рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрдЧ рдкрд░ рдЙрдирдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХреЛ рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо +1 рдХрд░ рд╕рдХреЗрдВ?
рдпрд╣ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд╛рд░реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдРрдкреНрдкрд▓ рдЦрд╛рддреЗ рдореЗрдВ рд╣реИ .. рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд▓рд┐рдВрдХ рдирд╣реАрдВ ;(
рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ openradar рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ rdar id рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рдзреЛрдЦрд╛ рджреЗ рд╕рдХреЗрдВ!
iOS9 рдмреАрдЯрд╛ 5 рдкрд░ рднреА рдРрд╕рд╛ рд╣реА:
рдореЛрдмрд╛рдЗрд▓ рд╕рдлрд╛рд░реА рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
WKWebview рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ NSProtocol рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
UIWebView рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдпрд╣рд╛рдВ рдЖрдИрдУрдПрд╕ 9 рдмреАрдЯрд╛ 5 рдкрд░ рднреА рдРрд╕рд╛ рд╣реА рд╣реИ
рдореИрдВрдиреЗ рдРрдкреНрдкрд▓ рдХреЗ рд╕рд╛рде рднреА рдПрдХ рдмрдЧ рджрд╛рдпрд░ рдХрд┐рдпрд╛ред рдУрдкрди рд░рд╛рдбрд╛рд░ рд▓рд┐рдВрдХ рд╣реИ: https://openradar.appspot.com/22186109 (рдЗрд╕рд╕реЗ рдЖрд▓рд╕реА рд▓реЛрдЧреЛрдВ рдХреЛ рдмрдЧ рдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП)ред рдпрджрд┐ рдЖрдк рдмрдЧ рд╢рдмреНрдж/рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рджреЗрдВ ;-) рдЖрдк рдУрдкрди рд░рд╛рдбрд╛рд░ рдЯрд┐рдХрдЯ рдкрд░ рдмрдЧ рдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдХреЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдУрдкреА рдореЗрдВ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП
рдореИрдВрдиреЗ рдЙрд╕реА рдПрдХреНрд╕рдХреЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рд╣реИ (@borrull рд╕реЗ) рд▓реЗрдХрд┐рди рдПрдирдЬреА-рд░реВрдЯ рдХреЗ рдмрдЬрд╛рдп рдпреВрдИ-рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рдеред рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдореБрджреНрджрд╛ред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣рд╛рдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: http://s000.tinyupload.com/index.php?file_id=87281871603760127355
рд╣рдо рднреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореБрджреНрджрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдкреАрдЫрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдХрд┐ рд╕реНрдерд╛рдиред * рдХреЛрдгреАрдп рдорд┐рд╢реНрд░рдг рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рдЧреБрдг рддреБрд░рдВрдд рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕реНрдерд╛рди.рд╣реИрд╢ (рдЬреИрд╕реЗ рд╕реНрдерд╛рди рд╕реЗрд╡рд╛ рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рддреБрд░рдВрдд рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдкрдврд╝реЗрдВ, рдорд╛рди рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреЙрдкрд╕реНрдЯреЗрдЯ рдФрд░ рд╣реИрд╢рдЪреЗрдВрдЬ рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝реЗ jqlite рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреБрдЫ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред
рдЬрдм рдореИрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реВрдБ рддреЛ рдореИрдВ рдПрдХ рдирдореВрдирд╛ рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░реВрдБрдЧрд╛ред
+1
@CleverCoder рдирдореВрдиреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
рдореБрдЭреЗ рд╕реБрдмрд╣ рдореЗрдВ рд░реЗрдкреНрд░реЛ рдХреЗрд╕ рдЦрддреНрдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЭреЗ рдкреВрд░реЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдмрд╛рдВрдзрд╛ рдЧрдпрд╛ рд╣реИред рдердкрдердкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдЬреИрд╕рд╛ рдХрд┐ iOS 9 рдХреА рдЧрд┐рдирддреА рд╣реЛрддреА рд╣реИ, рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдирд┐рд╣рд┐рдд рд╕реНрд╡рд╛рд░реНрде рд╣реИред рдореИрдВ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдХреБрдЫ рдЕрдкрд▓реЛрдб рдХрд░реВрдВрдЧрд╛ред
+1
рдореИрдВрдиреЗ рдЬреЛ рдореВрд▓ рдХрд╛рд░рдг рдорд╛рдирд╛ рд╣реИ рдЙрд╕реЗ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реНрдерд╛рди рд╣реИрд╢ рдпрд╛ href рдЧреБрдг рд╕реЗрдЯ рдХрд░рдирд╛ рддреБрд░рдВрдд "рд▓рд╛рдЧреВ" рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ XCode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
https://www.dropbox.com/s/2jkwv2thhm86nly/iOS%209%20Location%20Bug.zip?dl=0
рдЕрдЧрд░ рдЖрдк рдлрд╝рд╛рдЗрд▓ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
рдкрд░рд┐рдгрд╛рдореА рдорд╛рди рдХреЛ location.hash рдореЗрдВ рджреЗрдЦреЗрдВ, рд╕рд╛рде рд╣реА рд╕рдлрд╛рд░реА рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 'рдкреЙрдкрд╕реНрдЯреЗрдЯ' рдФрд░ 'рд╣реИрд╢рдЪреЗрдВрдЬ' рдЗрд╡реЗрдВрдЯреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХреБрдЫ рдЗрд╡реЗрдВрдЯ рдкреНрд▓рдВрдмрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрджрд▓рд╛рд╡ рдХреЛ рдЯрд╛рд▓рдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ рд╣реИред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реИред
рд╣рдо State.go рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп window.location.href рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдХрдо рдЫреЛрдЯреА рдЧрд╛рдбрд╝реАред
рд▓реЛрдХреЗрд╢рди.рд╣реИрд╢ рдХрд╛ рдорд╛рди рд░рдирд▓реВрдк рдХреЗ рдПрдХ рд╕реНрдкрд┐рди рдХреЗ рдмрд╛рдж рд╕рд╣реА рд╣реЛрдЧрд╛ред рдПрдВрдЧреБрд▓рд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓реЛрдХреЗрд╢рди рдореЗрдВ рджреЗрд░реА рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ angular.js/src/ng/location.js рдореЗрдВ ~ 2 рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ред
@hober рдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:
// update $location when $browser url changes
$browser.onUrlChange(function(newUrl, newState) {
$rootScope.$evalAsync(function() {
var oldUrl = $location.absUrl();
var oldState = $location.$$state;
var defaultPrevented;
$location.$$parse(newUrl);
$location.$$state = newState;
defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
newState, oldState).defaultPrevented;
// if the location was changed by a `$locationChangeStart` handler then stop
// processing this location change
if ($location.absUrl() !== newUrl) return;
if (defaultPrevented) {
$location.$$parse(oldUrl);
$location.$$state = oldState;
setTimeout(function(){ setBrowserUrlWithFallback(oldUrl, false, oldState) }, 0);
} else {
initializing = false;
afterLocationChange(oldUrl, oldState);
}
});
if (!$rootScope.$$phase) $rootScope.$digest();
});
рддрдерд╛
// update browser
$rootScope.$watch(function $locationWatch() {
var oldUrl = trimEmptyHash($browser.url());
var newUrl = trimEmptyHash($location.absUrl());
var oldState = $browser.state();
var currentReplace = $location.$$replace;
var urlOrStateChanged = oldUrl !== newUrl ||
($location.$$html5 && $sniffer.history && oldState !== $location.$$state);
if (initializing || urlOrStateChanged) {
initializing = false;
$rootScope.$evalAsync(function() {
var newUrl = $location.absUrl();
var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
$location.$$state, oldState).defaultPrevented;
// if the location was changed by a `$locationChangeStart` handler then stop
// processing this location change
if ($location.absUrl() !== newUrl) return;
if (defaultPrevented) {
$location.$$parse(oldUrl);
$location.$$state = oldState;
} else {
if (urlOrStateChanged) {
setTimeout(function(){ setBrowserUrlWithFallback(newUrl, currentReplace,
oldState === $location.$$state ? null : $location.$$state) }, 0);
}
afterLocationChange(oldUrl, oldState);
}
});
}
$location.$$replace = false;
// we don't need to return anything because $evalAsync will make the digest loop dirty when
// there is a change
});
рддреЛ рдореИрдВрдиреЗ setBrowserUrlWithFallback рд╡рд┐рдзрд┐ рдХреЗ рдЖрд╕-рдкрд╛рд╕ рдПрдХ рд╕реЗрдЯрдЯрд╛рдЗрдо рдЬреЛрдбрд╝рд╛ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рдХреЛрдгреАрдп рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдВрдЧреБрд▓рд░ рдореЗрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред https://gist.github.com/hober/a29b6c28ac1744c800dd
рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рдЖрдЧреЗ рдмрдврд╝реЗред рдореИрдВрдиреЗ рд╕реНрдерд╛рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреЛрдгреАрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рд╣реИред
"рдЕрдкрдбреЗрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░" рднрд╛рдЧ рдореЗрдВ, рдореИрдВрдиреЗ $rootScope.$evalAsync рдХреЛ $rootScope.$applyAsync рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдВ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдЕрдВрддрд░ рддрдм рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрдм рддрдХ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ $digest рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддреЗред рдЬрдм AngularJS рдПрдХ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдХреЛрдк рдЯреНрд░реА рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ $watch() рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдФрд░ рдЧрдВрджрд╛ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЗ рджреМрд░рд╛рди, $applyAsync() рдХреНрдпреВ рдФрд░ $evalAsync() рдХреНрдпреВ рджреЛрдиреЛрдВ рдлрд╝реНрд▓рд╢ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ; рд▓реЗрдХрд┐рди, рдпрд╣ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдЧрд╣реЛрдВ рдкрд░ рд╣реЛрддрд╛ рд╣реИред
$applyAsync() рдХрддрд╛рд░ рдХреЗрд╡рд▓ $digest рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдлрд╝реНрд▓рд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ AngularJS рдЧрдВрджреЗ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдБрдЪ рд╢реБрд░реВ рдХрд░реЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, $applyAsync() рдХрддрд╛рд░ рдХреЛ $digest рдХреЗ рджреМрд░рд╛рди рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рдмрд╛рд░ рдлреНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ рддрднреА рдлрд╝реНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдХрддрд╛рд░ $digest рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдкреЙрдкреНрдпреБрд▓реЗрдЯ рд╣реЛ рдЧрдИ рд╣реЛред
рджреВрд╕рд░реА рдУрд░, $evalAsync() рдХрддрд╛рд░, рдЙрд╕ рд╕рдордп-рд▓реВрдк рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдлрд╝реНрд▓рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ $digest рдХреЗ рдЕрдВрджрд░ "рдбрд░реНрдЯреА рдЪреЗрдХ" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЗ рджреМрд░рд╛рди $evalAsync() рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдХрд┐рд╕реА рднреА рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдЙрд╕реА рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдореЗрдВ рдмрд╛рдж рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ $evalAsync() рджреНрд╡рд╛рд░рд╛ $watch() рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рднреАрддрд░ рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЙрд╕реА рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред рдПрдХ $watch() рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рднреАрддрд░ рд╕реЗ $applyAsync() рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдмрд╛рдж рдХреЗ рд╕рдордп (~10ms) рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ :-)ред
// update browser
$rootScope.$watch(function $locationWatch() {
var oldUrl = trimEmptyHash($browser.url());
var newUrl = trimEmptyHash($location.absUrl());
var oldState = $browser.state();
var currentReplace = $location.$$replace;
var urlOrStateChanged = oldUrl !== newUrl ||
($location.$$html5 && $sniffer.history && oldState !== $location.$$state);
if (initializing || urlOrStateChanged) {
initializing = false;
$rootScope.$applyAsync(function() {
var newUrl = $location.absUrl();
var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
$location.$$state, oldState).defaultPrevented;
// if the location was changed by a `$locationChangeStart` handler then stop
// processing this location change
if ($location.absUrl() !== newUrl) return;
if (defaultPrevented) {
$location.$$parse(oldUrl);
$location.$$state = oldState;
} else {
if (urlOrStateChanged) {
setBrowserUrlWithFallback(newUrl, currentReplace,
oldState === $location.$$state ? null : $location.$$state);
}
afterLocationChange(oldUrl, oldState);
}
});
}
$location.$$replace = false;
// we don't need to return anything because $evalAsync will make the digest loop dirty when
// there is a change
});
рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдореИрдВ рдХреЛрдгреАрдп рдХреЛрдбрдмреЗрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рддрд░реНрдХ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ url(...) рдлрд╝рдВрдХреНрд╢рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдерд╛рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред href рддреБрд░рдВрдд рд╕рд╣реА URL рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЙрд╕реА рд░рди рд▓реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, $digest рд╕реНрдерд┐рд░реАрдХрд░рдг рдЪрдХреНрд░ рдХреЗ рднреАрддрд░, рдЗрд╕реЗ рдкреБрд░рд╛рдирд╛ URL рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рдкреИрдЪ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'рд▓рдВрдмрд┐рддHref' рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрд╕ рдорд╛рди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд╕реЗрдЯ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдорд╛рди рд╕реНрдерд╛рди.href рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓рдВрдмрд┐рдд рдорд╛рди рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпреВрдЖрд░рдПрд▓ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рджреМрд░рд╛рди, рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП 0ms рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпреВрдЖрд░рдПрд▓() рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рддрд░реНрдХ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рджреЗрд░реА рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЛрдгреАрдп рдЯреИрдЧ v1.4.3.3 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
diff --git a/src/ng/browser.js b/src/ng/browser.js
index 928de95..3b9957e 100644
--- a/src/ng/browser.js
+++ b/src/ng/browser.js
@@ -87,7 +87,9 @@ function Browser(window, document, $log, $sniffer) {
var cachedState, lastHistoryState,
lastBrowserUrl = location.href,
baseElement = document.find('base'),
- reloadLocation = null;
+ reloadLocation = null,
+ pendingHref = null,
+ pendingHrefTimer = null;
cacheState();
lastHistoryState = cachedState;
@@ -124,6 +126,18 @@ function Browser(window, document, $log, $sniffer) {
if (location !== window.location) location = window.location;
if (history !== window.history) history = window.history;
+ // Schedule cleaning up pendingHref on the next run loop for setting URL. This is to handle
+ // the case where the browser doesn't update the location.* properties immediately
+ if (!pendingHrefTimer && pendingHref && url) {
+ pendingHrefTimer = setTimeout(function () {
+ if (location.href == pendingHref) {
+ console.log('Actual href updated... setting pendingHref to null from setTimeout');
+ pendingHref = null;
+ }
+ pendingHrefTimer = null;
+ }, 0);
+ }
+
// setter
if (url) {
var sameState = lastHistoryState === state;
@@ -147,6 +161,7 @@ function Browser(window, document, $log, $sniffer) {
// Do the assignment again so that those two variables are referentially identical.
lastHistoryState = cachedState;
} else {
+ pendingHref = url;
if (!sameBase || reloadLocation) {
reloadLocation = url;
}
@@ -161,10 +176,22 @@ function Browser(window, document, $log, $sniffer) {
return self;
// getter
} else {
+ var href = location.href.replace(/%27/g, "'");
+ if (pendingHref) {
+ //console.log('.. using pendingHref for url() return value');
+ href = pendingHref;
+ }
+
+ if (location.href == pendingHref) {
+ console.log('Actual href updated... setting pendingHref to null in getter');
+ pendingHref = null;
+ }
+
+ //var href = location.href.replace(/%27/g,"'");
// - reloadLocation is needed as browsers don't allow to read out
// the new location.href if a reload happened.
// - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172
- return reloadLocation || location.href.replace(/%27/g,"'");
+ return reloadLocation || href;
}
};
рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @CleverCoder ! рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ! :+1:
@CleverCoder
рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдгреАрдп рдЯреАрдо рдХреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
@viattik рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХреЛрдгреАрдп рдЯреАрдо iOS9 рдкрд░ UIWebView рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЕрдкрдирд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдмрдЧ UIWebView (Apple) рдореЗрдВ рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рд╣рдореЗрд╢рд╛ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...
@raftheunis87
рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрдЧ рд╣реИрдВ рдФрд░ рдХреЛрдгреАрдп рдХреЛрдб рдореЗрдВ рдЙрди рдмрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ UIWebView рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдРрдкреНрд╕ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдирд╡реАрдирддрдо iOS рдореЗрдВ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдРрдкреНрд╕ рдореЗрдВ рдХреЛрдгреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддрдм рддрдХ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ Apple рдЙрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░ рджреЗрддрд╛ред рдФрд░ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╣реИред
рддреЛ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдХреЛрд╢рд┐рд╢ рджреВрдВрдЧрд╛ред
@viattik рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдБред рдФрд░ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ: рдРрдкреНрдкрд▓ рдиреЗ рд╣рдореЗрдВ рдмрддрд╛рдпрд╛ рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ UIWebView рдмрдЧ тАЛтАЛрдХреЛ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ: рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ ;-)
рджреЛрд╕реНрддреЛрдВ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╡реЗрдмрдХрд┐рдЯ рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд░реЗрдкреНрд░реЛ рдХреЗрд╕ рдХреЗ рд╕рд╛рде, рддреЛ рдореИрдВ рд╡реЗрдмрдХрд┐рдЯ рдкрдХреНрд╖ рдкрд░ рд╣рдорд╛рд░реЗ рдХреБрдЫ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд╡рд░реНрддреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░реВрдВрдЧрд╛ред https://bugs.webkit.org/
@рдирд╛рдУрдореАрдмреНрд▓реИрдХ
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡реЗрдмрдХрд┐рдЯ рдмрдЧ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ iOS9 рдкрд░ UIWebView рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред IOS9 рдкрд░ рд╕рдлрд╛рд░реА рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИред
@ raftheunis87 рдЖрдкрдХреЗ рдХреЛрдб рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛
@raftheunis87 @CleverCoder рдЖрдпрдирд┐рдХ-рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?
@abrahamrkj рдореБрдЭреЗ рдЖрдпрдирд┐рдХ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдпрдирд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЙрдирдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛрдгреАрдп рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ? рдЕрдиреНрдпрдерд╛ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╡рд╣реА рдлрд┐рдХреНрд╕ рдЖрдпрдирд┐рдХ-рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ ...
@ raftheunis87 https://github.com/driftyco/ionic/tree/master/js рдпрд╣ рд╡рд╣ рдХреЛрдгреАрдп рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП @CleverCoder +1ред рдореИрдВ @viattik рд╕реЗ рд╕рд╣рдордд
рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕рдВрдХреЛрдЪ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рджреВрд╕рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдгреАрдп рдХреЛрдбрдмреЗрд╕ рдХреЗ рдХрд░реАрдм рдирд╣реАрдВ рд╣реВрдВред рдореИрдВ рдЬрд▓реНрдж рд╣реА рд╕рдорд╛рдзрд╛рди рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдмреБрд▓реЗрдЯ-рдкреНрд░реВрдл рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛ рдкрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ред рд╕реНрдерд╛рди рд╡рд╕реНрддреБ 'рддреБрд░рдВрдд' рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рддрдм рддрдХ рдЯрд┐рдХрд╛ рд░рд╣рд╛ рдЬрдм рддрдХ 'рдкреЙрдкрд╕реНрдЯреЗрдЯ' рдФрд░ 'рд╣реИрд╢рдЪреЗрдВрдЬ' рдИрд╡реЗрдВрдЯ рд╣реБрдХ рдирд╣реАрдВ рдереЗ, рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдердЧрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХрд╛рд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░.. рд╢рд╛рдпрдж рдЙрди рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╕рдордп рдмрджрд▓ рдЧрдпрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣реА рджреЗрдЦ рд░рд╣рд╛ рдерд╛)ред
рдореИрдВ рдЗрд╕реЗ рдЕрдЧрд▓реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рджреЗрдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЕрдЧрд░ рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЕрдм рддрдХ рдЬреЛ рдХреБрдЫ рднреА рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЙрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛ рдЦреЛрджреВрдВрдЧрд╛, рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЕрдЧрд░ рдпрд╣ рднреНрд░рдорд┐рдд рд╣реИред рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдмрд╣реБрдд рдХреБрдЫ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрднреА рднреА рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВред
рдЪреАрдпрд░реНрд╕!
... рдФрд░ рд╣рд╛рдБ, @borrull , рдореИрдВ рд╕рд╣рдордд рд╣реВрдБред рдпрджрд┐ рдРрдкреНрдкрд▓ рдХреЛрдИ рдФрд░ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рд╕рдордп рдмрдо рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд░рд╛рдм рдкреНрд░реЗрд╕ рдФрд░ рдЙрдВрдЧрд▓реА рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░реЗрдЧрд╛ред рдореИрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдорд░ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ (рдореИрдВ рдЗрди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЧреБрдгреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рддрд░реНрдХ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ), рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд╕реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореВрд▓реНрдп рдмрджрд▓рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрд╣рд╛рдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рд░реЗрдЦрд╛? рд╣рдо рдХрд┐рди рдЕрдиреНрдп рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ? рдпрд╣ рдПрдХ рдЕрдЬреАрдм рд╣реИред
@CleverCoder рдмрд╕ рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЖрдкрдХреЗ рдкреИрдЪ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рди рдмрдЪрд╛ рд▓рд┐рдпрд╛!
@CleverCoder рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВрдиреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд╛рд▓рд╛ рдЬреЛ рдХреЛрдгреАрдп рд╕реЗ рдбреЗрдХреЛрд░реЗрдЯрд░ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдгреАрдп рд╕реНрд░реЛрдд рдХреЛ рдкреИрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрддрд╛ рд╣реИред
Cssua рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реЗрдЯрдЕрдк рдХреЛ рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
app.config(['$provide', ($provide) => {
$provide.decorator('$browser', ['$delegate', ($delegate) => {
var origUrl = $delegate.url;
var pendingHref = null;
var pendingHrefTimer = null;
var newUrl = function (url, replace, state) {
if (url) {
// setter
var result = origUrl(url, replace, state);
if (window.location.href != url) {
if (pendingHref != url) {
pendingHref = url;
if (pendingHrefTimer) clearTimeout(pendingHrefTimer);
pendingHrefTimer = setTimeout(function () {
if (window.location.href == pendingHref) {
pendingHref = null;
}
pendingHrefTimer = null;
}, 0);
}
}
return result;
} else {
// getter
if (pendingHref == window.location.href) {
pendingHref = null;
}
return pendingHref || origUrl(url, replace, state);
}
};
$delegate.url = newUrl;
return $delegate;
}]);
}]);
@CleverCoder #
@ рдЬреЗрдбреА-рдХреИрд░реЛрд▓: рдпрд╣ рд╡рд╛рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдЖрдЬ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдЗрд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╕рд╛рдорд╛рди рд╕реЗ рдХрд╛рдлреА рднрд░рд╛ рд╣реБрдЖред рдпрд╣ рд╕рд┐рд░реНрдл рдФрд░ рдЕрдзрд┐рдХ рд░рд╣рд╕реНрдп рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдерд╛рди рдореЗрдВ рджреЗрд░реА рдХрд╛ рдкрд░рд┐рдЪрдп рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред * рдорд╛рди рдЕрдкрдбреЗрдЯ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред
@realityfilter : рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ ... рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА
рд╣реЗ рд╕рдм,
рдореИрдВ рдмрд╕ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдлрд┐рдХреНрд╕ рдиреЗ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдПрдХ рдмрдЧ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдерд╛ред
рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдПрдВрдХрд░ рдЯреИрдЧ рдереЗ рдЬреЛ href="#" рдФрд░ ng-click="someCall()" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗред href рдЗрд╕ рдлрд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ рдХреЛ index.html рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд░рд╣рд╛ рдерд╛ред href рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИред
рд╣рдорд╛рд░рд╛ рдРрдк рдЖрдпрдирд┐рдХ рдореЗрдВ рдмреИрдХ рдмрдЯрди рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЯреВрдЯ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рдирдП рджреГрд╢реНрдп рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рджреГрд╢реНрдп рдкрд░ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЖрдИрдУрдПрд╕ 9 рдмреАрдЯрд╛ рдкрд░ рдирдП рджреГрд╢реНрдп рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдпрдирд┐рдХ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд╕рдВрдХрд▓реНрдк
IOS 9 рдмреАрдЯрд╛ 5 13A4325c, рдХреЛрдгреАрдп 1.4.0 (рдХреЙрд░реНрдбреЛрд╡рд╛-рдЖрдИрдУрдПрд╕ 3.9.1 рдХреЗ рд╕рд╛рде) рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд UIWebView рдмрдЧ тАЛтАЛрдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛!
рдХреЛрдгреАрдп v1.2.27 . рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛
рдореИрдВрдиреЗ рдЗрд╕реЗ 1.2.27 рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬрд╛ рд╣реИ, рдмрдЧ 1.2.26 рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣реИред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдкреНрд░рддрд┐рдмрджреНрдз рдЕрдкрд░рд╛рдзреА рд╣реИред
@damrbaby рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдХреБрдЫ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рд╕рдлрд╛рд░реА рдореЗрдВ рдХреЛрдгреАрдп рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдИрдУрдПрд╕ 9 рдкрд░ uiWebView рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреЛрдгреАрдп рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рдмреБрд░реА рдЪреАрдЬ рд╣реИред
@CleverCoder @realityfilter @ jyc66 рдореИрдВ рд╕рд┐рд░реНрдл рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЖрдкрдиреЗ рдЕрднреА-рдЕрднреА рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛рдпрд╛ред
рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА iOS9 GM Seed рдкрд░ рдореМрдЬреВрдж рд╣реИ рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рдРрдкреНрд╕ рдХреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рд╡рд╛рдПрдВ!
рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА iOS9 GM (13A340) рдореЗрдВ рдореМрдЬреВрдж рд╣реИ
рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ Apple рдиреЗ рдХреБрдЫ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдРрдкреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдпрд╛ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдирд╣реАрдВ рдмрджрд▓реЗ рд╣реИрдВ) рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ :(ред рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдИрдУрдПрд╕ 9 рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рдРрдкреНрдкрд▓ рдХреЛ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ред рдкреБрд░рд╛рдиреЗ рдРрдк рдореЗрдВ рдирд╡реАрдирддрдо рдПрдВрдЧреБрд▓рд░ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рднреА рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреАред
рдореБрдЭреЗ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдПрдХрдорд╛рддреНрд░ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ iOS9 рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ?
рддреЛ, рдЖрдпреЛрдирд┐рдХ рдЯреАрдо рд╕реЗ @adamdbradley , @perrygovier , рдФрд░ @mhartington рдкреВрд░реЗ рджрд┐рди рдПрдХ рдлрд┐рдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ Ionic рдФрд░ рд╕рд╛рджреЗ рдХреЛрдгреАрдп рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓рдХреНрд╖реНрдп рдПрдХ рдбреНрд░реЙрдк-рдЗрди рдлрд┐рдХреНрд╕ рд╣реЛрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдгреАрдп рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ (рдЙрдореНрдореАрдж рд╣реИ) рдЕрдзрд┐рдХрд╛рдВрд╢ 1.2+ рдХреЛрдгреАрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдпрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рдмрдВрдбрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЗрд╕ рдкреИрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ $browser
рдХреЛ рд╕рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдиреЛрдЯ: рдпрд╣ рдХреЛрдгреАрдп 1.4.3 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдХреЛрдгреАрдп рдЙрдЪрд┐рдд рд╕реЗ browser.js
"рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди" рдХреА рддрд░рд╣ рд╣реИ: https://github.com/driftyco/ionic/blob/ios9-patch/js /angular/service/decorators/ios9-browser-fix.js
рд╣рдордиреЗ рдкреИрдЪ рдХреЛ рдЕрдкрдиреЗ рд╕реАрдбреАрдПрди рдкрд░ рднреА рд░рдЦрд╛ рд╣реИред рдореИрдВ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕реАрдбреАрдПрди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╣рд╛рдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЕрднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдХреЛ рдЕрдкрдиреА рдХреЛрдгреАрдп рдпрд╛ ionic.bundle.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рдиреАрдЪреЗ рд░рдЦреЗрдВ:
<script src="https://code.ionicframework.com/patch/ios9-$browser-patch.js"></script>
рд╕рд╛рде рд╣реА, рдЕрднреА рдпрд╣ рдкреИрдЪ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк iOS9 рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рддрд░рд╣ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ iOS 9 UIWebView рдкрд░ рдЪрд▓рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рд╕рдВрдмрдВрдзрд┐рдд рдЖрдпрдирд┐рдХ рдореБрджреНрджреЗ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ: https://github.com/driftyco/ionic/issues/4082#issuecomment -139079725
рдирдорд╕реНрддреЗ,
UI-sref рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди $state.go рдмреИрдХ рдмрдЯрди рдПрдиреАрдореЗрд╢рди рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ
рдФрд░ рдЗрд╕ рд╕реБрдзрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдкреГрд╖реНрда рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХрд░рддрд╛ рд╣реИред
рд╕рд╛рджрд░,
рдЕрдЬрдп рд╕рд┐рдВрд╣
рдЧреБрд░реБ, 10 рд╕рд┐рддрдВрдмрд░, 2015 рдХреЛ рд╕реБрдмрд╣ 6:23 рдмрдЬреЗ рдореИрдХреНрд╕ рд▓рд┐рдВрдЪ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рддреЛ, @adamdbradley https://github.com/adamdbradley , @perrygovier
https://github.com/perrygovier , рдФрд░ @mhartington
https://github.com/mhartington рдЖрдпреЛрдирд┐рдХ рдЯреАрдо рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
рдкреВрд░реЗ рджрд┐рди рдПрдХ рдлрд┐рдХреНрд╕ рдкрд░ рдЬреЛ рдЖрдпреЛрдирд┐рдХ рдФрд░ рд╕рд╛рджреЗ рдХреЛрдгреАрдп рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛:
рдХреБрдВрдЖред рд▓рдХреНрд╖реНрдп рдПрдХ рдбреНрд░реЙрдк-рдЗрди рдлрд┐рдХреНрд╕ рд╣реЛрдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рдХреЛрдгреАрдп, рдФрд░ рд╡рд┐рд▓ (рдЙрдореНрдореАрдж рд╣реИ) рдЕрдзрд┐рдХрд╛рдВрд╢ 1.2+ рдХреЛрдгреАрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗредрдпрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рдмрдВрдбрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ $рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдареАрдХ рдХрд░рддрд╛ рд╣реИ
рдЗрд╕ рдкреИрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
https://github.com/angular/angular.js/issues/12241#issuecomment -130744518ред
рдиреЛрдЯ: рдпрд╣ рдХреЛрдгреАрдп рез.рек.рей рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди" рд╣реИ
рдмреНрд░рд╛рдЙрдЬрд╝рд░.рдЬреЗрдПрд╕ рдХреЛрдгреАрдп рд╕реЗ рдЙрдЪрд┐рдд:
https://github.com/driftyco/ionic/blob/ios9-patch/js/angular/service/decorators/ios9-browser-fix.jsрд╣рдордиреЗ рдкреИрдЪ рдХреЛ рдЕрдкрдиреЗ рд╕реАрдбреАрдПрди рдкрд░ рднреА рд░рдЦрд╛ рд╣реИред рдореИрдВ рд╕реАрдбреАрдПрди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛
рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╣рд╛рдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЕрднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИредрдХреГрдкрдпрд╛ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдХреЛ рдЕрдкрдиреЗ рдХреЛрдгреАрдп рдХреЗ рдиреАрдЪреЗ рд░рдЦреЗрдВ рдпрд╛
рдЖрдпрдирд┐рдХ.рдмрдВрдбрд▓.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓:Also, right now it applies the patch whether you're running on iOS9 or
not. That will soon be fixed such that it runs only on the iOS 9 UIWebView.тАФ
Reply to this email directly or view it on GitHub
https://github.com/angular/angular.js/issues/12241#issuecomment-139082474
.
рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдмрдЧ рдЕрднреА рднреА iOS 9.1 рдмреАрдЯрд╛ 1 рдореЗрдВ рдореМрдЬреВрдж рд╣реИ
рд╣рдо $state.go
рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЕрднреА рднреА рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдЯрд┐рдордЯрд┐рдорд╛ рд░рд╣рд╛ рд╣реИ / рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрдХреНрд░рдордг рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдлрд┐рдХреНрд╕ рд╣рдорд╛рд░реЗ рдРрдк рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдм рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ https
http CDN рдХреЗ рдмрдЬрд╛рдп CND рд▓рд┐рдВрдХ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ ios9 рдХреЗрд╡рд▓ https рдХреЛ рдЕрдВрджрд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдРрдк рдЗрд╕рд▓рд┐рдП https рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рдРрдк рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред
https://code.ionicframework.com/patch/ios9- $browser-patch.js
рдЧреБрд░реБ, резреж рд╕рд┐рддрдВрдмрд░, реирежрезрел рдЕрдкрд░рд╛рд╣реНрди рей:реиреи рдмрдЬреЗ, рдЯрд╛рдпрд▓рд░ рдХреНрд░реИрдореЙрдиреНрдб рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
рд╣рдо $state.go рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЕрднреА рднреА рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдЭрд┐рд▓рдорд┐рд▓рд╛рддрд╛ рд╣реИ / рдирд╣реАрдВ
рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрдХреНрд░рдордгред-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/angular/angular.js/issues/12241#issuecomment -139189216
.
ios9-$browser-patch.js рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ jshint рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдкреИрдЪ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдПрдВрдЧреБрд▓рд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рд╕реНрдерд╛рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╢рд╛рдпрдж рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ ...
ios9-$browser-patch.js рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рд╕реВрдЪреА рджреГрд╢реНрдп рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рджреГрд╢реНрдп рдореЗрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $state.go() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╕реНрд▓рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реАрдзреЗ рдкреАрдЫреЗ, рдореИрдВ рдлрд┐рд░ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред UI-sref рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╕рд╢рд░реНрдд рддрд░реНрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдкреИрдЪ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛, рдФрд░ рдЗрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ ./lib/ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ (рдореИрдВрдиреЗ рдЬрд╛рдВрдЪ рдХреА рдХрд┐ рдпрд╣ рд▓реЛрдб рд╣реЛ рдЧрдпрд╛ рд╣реИ), рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛:
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
http://errors.angularjs.org/1.3.13/$rootScope/infdig?p0=10&p1=%5B%5D
рдЖрдИрдУрдПрд╕ 9 рдЬреАрдПрдо, рдЖрдпрдирд┐рдХ 1.0.0ред
рдЬреЛрд░реАрд╕, ios9 рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЛрдб рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
var isIOS9 = (navigator.userAgent.indexOf('Version/9.') != -1) && (navigator.appVersion.indexOf('9_0') != -1);
рдЕрдЧрд░ (!isIOS9) {
// iOS9 UIWebView рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдкреИрдЪ рди рдХрд░реЗрдВ
$ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ;
}
@ jyc66 рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реВрдВ рдХрд┐ рдпрд╣ рдЖрдИрдУрдПрд╕ <9 рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛
isIOS9
рд╡рд┐рдзрд┐ рджреЛрд╖рдкреВрд░реНрдг рд╣реИред рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП:
> navigator.userAgent
< "Mozilla/5.0 (iPhone; CPU iPhone OS 9_0 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13A340 (2065230368)" = $1
> navigator.appVersion
< "5.0 (iPhone; CPU iPhone OS 9_0 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13A340 (2065230368)" = $2
рд╣рд╛рдБ, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк OS рдХреЗ 9 рд╕реЗ рдХрдо рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдИрдУрдПрд╕ 9.1 рдкрд░ рдореМрдЬреВрджрд╛ рдЪреЗрдХ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЬрд▓реНрдж рд╣реА рд╕рд╛рдордиреЗ рдЖ рд░рд╣рд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ рдЕрднреА рддрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдпрд╛ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддрд╛:
// only provide the patch for iOS9 on UIWebView
var isIOS9 = (navigator.userAgent.indexOf(' OS 9') != -1) && (navigator.appVersion.indexOf(' OS 9') != -1);
if (!isIOS9) {
// do not patch if not iOS9 UIWebView
return $browser;
}
рд╣рд╛рдБ, рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдореИрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдИрдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкреИрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░> = 9.0 рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдпрджрд┐ / рдЬрдм Apple iOS рдХреЗ рдмрд╛рдж рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?
@ рдЬреЗрд░реЗрдореАрдкреНрд▓реАрдЬ рдореИрдВ рдЕрднреА 9.1 рдмреАрдЯрд╛ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ
рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрдм рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдЬрд╛рдВрдЪ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛, рдкреИрдЪ рдХреЛ рдорд┐рдиреАрдлрд╛рдЗрдб рдмрдВрдбрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ред рдпрд╣ рдПрдХ рдЧреИрд░-рдЖрдпрдирд┐рдХ, рдХреЛрдгреАрдп рдРрдк рд╣реИред рдЖрдЬ рд░рд╛рдд рдмрд╛рдж рдореЗрдВ рдФрд░ рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрдирд┐рдХ рдЯреАрдо рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!
рддреЛ 9.1рдмреАрдЯрд╛ рд╡рди рдореЗрдВ рдЕрднреА рддрдХ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рдерд╛ред
рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдЬрдм рдХреЛрдИ рдЖрдИрдУрдПрд╕ 9 рдкрд░ рдкреИрдЪ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ.рд╕реНрдкреНрд▓рд┐рдЯ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ https://www.dropbox.com/s/hxgct9y0f9z6yci/Screenshot%202015-09-11%2000.40.26.png?dl=0
рдореИрдВ рд╣реИрд░рд╛рди рд╣реВрдБ! IOS8.4 рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреНрд░реЛрдо рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрджреНрдпрддрди : String.split рдореЗрд░реЗ рд▓рд┐рдП рдЖрдИрдУрдПрд╕ 9 рдЖрдИрдлреЛрди 6 рдФрд░ 6 рдПрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдкреИрдЪ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд▓реЗрдирд╛ рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
рд╡реИрд╕реЗ - рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ:
var isIOS9WebView = (navigator.userAgent.indexOf('Safari') === -1) && (navigator.appVersion.indexOf('OS 9') !== -1);
if (!isIOS9WebView) {
// do not patch if not iOS9 UIWebView
return $browser;
}
рдореИрдВ рдЗрдЧреЛрд░ рдХреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдорд╛рдирддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ 9 рд╕рдлрд╛рд░реА рдкрд░ рдкреИрдЪ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ UIWebView рдкрд░ред
@ dac09 рдореИрдВ рдЖрдкрдХреЗ
рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдлрд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реИ?
рдореИрдВ @CleverCoder рдХреЗ рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдЖрдпрдирд┐рдХ рдХрд╛ рдкреИрдЪ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдХрд┐ рдЗрд╕реЗ рдХреЗрд╡рд▓ iOS9 UIWebView рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП UIWebView iOS8, рд╕рдлрд╛рд░реА, рдпрд╛ Android рдкрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИред
рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕ рдкреИрдЪ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://gist.github.com/IgorMinar/863acd413e3925bf282c
рдЗрд╕реЗ рдПрдВрдЧреБрд▓рд░ 1.2 - 1.4.5 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдПрдВрдЧреБрд▓рд░ рдЕрдкрдбреЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдЕрдкрдиреЗ рдРрдк рдкрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдирд┐рд░реНрджреЗрд╢ рд╕рд╛рд░ рдореЗрдВ рд╣реИрдВред
рд╣рдо 1.4.6 рдореЗрдВ рдПрдХ рдЙрдЪрд┐рдд рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмреАрдЪ рдпрд╣ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдкреИрдЪ рдПрдХ рдлрд┐рдХреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рддреИрдирд╛рддреА рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░ рд╕рдХреЗрдВред
рд╣рд╛рдп @IgorMinar - рдореБрдЭреЗ рдЕрдкрдиреЗ рдХреЛрдгреАрдп 1.3 (рдЖрдпрдирд┐рдХ рдмреАрдЯрд╛ -14) рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ 1.3 рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдкрд░ .decorator рд╡рд┐рдзрд┐ рдЙрдкрд▓рдмреНрдз рд╣реИ?
рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: angular.module(...)ред рдбреЗрдХреЛрд░реЗрдЯрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ (рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди) @ angular-ios9-uiwebview.patch.js:33
@rajatrocks рдЙрд╣ .. рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред рдореЙрдбреНрдпреВрд▓.рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗрд╡рд▓ 1.4 рдлреАрдЪрд░ рд╣реИред рдореБрдЭреЗ рдкреИрдЪ рдмрджрд▓рдиреЗ рджреЛред
@rajatrocks рдореИрдВ рдЕрджреНрдпрддрди рд╕рд╛рд░
рдзрдиреНрдпрд╡рд╛рдж @IgorMinar , "рдЗрдВрд╕реНрдЯреЙрд▓" рдЕрднреА рдареАрдХ рд╣реИред рдЖрдпрдирд┐рдХ рдзрд╛рдЧреЗ рдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред
@IgorMinar рдореИрдВрдиреЗ рдЖрдкрдХреА рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдХреА рд╣реИ рдФрд░ рдореЗрд░реЗ рдРрдк.рдЬреЗрдПрд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
@IgorMinar рдЖрдкрдХреЗ рдкреИрдЪ рдиреЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди @mlynch рд╕реЗ рдПрдХ рдиреЗ рдХрд┐рдпрд╛ред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ iOS рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд▓рд╛рдЧреВ рд╣реИ, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЙрд░реНрдбреЛрд╡рд╛ рд╣реБрдХ рдмрдирд╛рдпрд╛ рд╣реИ:
https://gist.github.com/DURK/f2acd6bca4759e719801
рдЕрдкрдбреЗрдЯ : рдЖрд╣, рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдкреИрдЪ рдореЗрдВ рдЕрдм рдПрдХ рдЪреЗрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ iOS9 рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
@IgorMinar @DURK рдФрд░ @jprangenberg рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рдж, iPad Air 2 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп "isIOS9UIWebView" рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рдЕрдЧрд░ рдореИрдВ рд╢рд┐рдо рдХреЛ рд╣рдореЗрд╢рд╛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкреИрдЪ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ: https://github.com/driftyco/ionic/issues/4082#issuecomment -139567128
@IgorMinar , рдЖрдкрдХрд╛ рдкреИрдЪ iOS 9 iPhone UIWebView рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди iPad рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВред
UIWebView рдореЗрдВ iOS 9 iPhone рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ:
Mozilla/5.0 (iPhone; CPU iPhone OS 9_0 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13A340
UIWebView рдореЗрдВ iOS 9 iPad рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ:
Mozilla/5.0 (iPad; CPU OS 9_0 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13A340
рд░реЗрдЧреЗрдХреНрд╕ рдЬреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЗрди рд╕рднреА рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ рд╡рд╣ рд╣реИ:
function isIOS9UIWebView(userAgent) {
return /(iPhone|iPad|iPod);.*OS 9_\d/.test(userAgent) && !/Version\/9\./.test(userAgent);
}
рдореИрдВрдиреЗ @IgorMinar рдХреЗ рд╕рд╛рд░ рдХреЛ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рд╣реИрдВ: https://gist.github.com/Jeremy рдХреГрдкрдпрд╛ /
@DURK рдХреЙрд░реНрдбреЛрд╡рд╛ рд╣реБрдХ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдкреИрдЪ рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЖрдИрдУрдПрд╕ 9 рдкрд░ @
@ рдЬреЗрд░реЗрдореАрдкреНрд▓реАрдЬ рд╕рдлрд╛рд░реА рдЖрдИрдУрдПрд╕ 9 рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП @IgorMinar рдХреА рдЬрд╛рдВрдЪ рд╕рд╣реА рд╣реИ - рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ UIWebViews рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ UIWebView рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рдлрд╛рд░реА рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ:
function isIOS9UIWebView(userAgent) {
return /(iPhone|iPad|iPod);.*OS 9_\d/.test(userAgent) && !/Version\/9\./.test(userAgent);
}
рдореИрдВрдиреЗ рдкреИрдЪ рдХрд╛ v1.0.3 рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛
@IgorMinar рдХреНрдпрд╛ рдпрд╣ рдлрд┐рдХреНрд╕ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк ngRoute рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдлрд┐рдХреНрд╕ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛тАж :-(
@jprangenberg рд╣рд╛рдБред ngroute рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдРрдк рдЖрдИрдлреЛрди/рдЖрдИрдкреИрдб рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдкреИрдЪ рдХреЗ v1.0.3+ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
@IgorMinar рд╕рдВрд╕реНрдХрд░рдг 1.0.3 рдкреИрдЪ рдХрд╛ рдореЗрд░реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
index.html:
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="lib/ngCordova/dist/ng-cordova.min.js"></script>
<script src="js/libs/angular-ios9-uiwebview.patch.js"></script>
рдРрдк.рдЬреЗрдПрд╕:
angular.module('starter', [
'ionic',
'ngCordova',
'ngIOS9UIWebViewPatch',
'ionic.service.core',
'ionic.service.push',
'angular-loading-bar',
'starter.services',
'starter.controllers'
])
app.js (рдорд╛рд░реНрдЧ):
$stateProvider.state('app.regions', {
cache: false,
url: "/states/:state_id/regions",
views: {
'menuContent': {
templateUrl: "templates/regions.html",
controller: 'RegionsCtrl'
}
}
})
рдРрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╕реВрдЪреА-рд╡рд╕реНрддреБ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдп рджреЗрдЦрддреЗ рд╣реИрдВред рдЗрддрд┐рд╣рд╛рд╕ рдмрдЯрди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрддрд┐рд╣рд╛рд╕ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реВрдЪреА-рд╡рд╕реНрддреБ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд╛ рджреГрд╢реНрдп рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
<ion-list>
<ion-item ng-repeat="state in states" href="#/app/states/{{state.id}}/regions">
{{state.name}}
</ion-item>
</ion-list>
@IgorMinar рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ?
@jprangenberg рдХреНрдпрд╛ рдЖрдк рдЖрдпрдирд┐рдХ рдмрдВрдбрд▓ рдпрд╛ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдкреИрдЪ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
@perrygovier рдореИрдВ
@jprangenberg рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди ionic.bundle.jsред рд╡рд╣ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ?
рдореЗрд░реЗ ionic.bundle.js рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг:
window.ionic.version = '1.0.0';
@perrygovier рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдмрд╛рд╣рд░, рдХреНрдпрд╛ рдмрдВрдбрд▓ рдХреЗ 1.1.0 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИ?
http://code.ionicframework.com/1.1.0/js/ionic.bundle.min.js
рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП CSS рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
http://code.ionicframework.com/1.1.0/css/ionic.min.css
рдЕрд░реЗ @jprangenberg , рдЬрдмрдХрд┐ рд╣рдо рд╕рднреА рдЗрд╕ рдкрд░ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдЗрдП рдЖрдпрдирд┐рдХ рдореБрджреНрджреЗ рдкрд░ рдЗрд╕ рдЖрдпрдирд┐рдХ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░реНрдЪрд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦреЗрдВ рддрд╛рдХрд┐ рд╣рдо рдирд┐рдпрдорд┐рдд рдХреЛрдгреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдкреИрдо рди рдХрд░реЗрдВ рдбреНрд░рд┐рдлреНрдЯреАрдХреЛ/рдЖрдпрдирд┐рдХ#4082
рддреЛ https://github.com/Telerik-Verified-Plugins/WKWebView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрдЧ WKWEBVIEW рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?
рдмрдЧ рдХреЗрд╡рд▓ iOS 9 рдХреЗ UIWebView рдореЗрдВ рд╣реИред WKWebView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рдЗрди рд▓реЛрдЧреЛрдВ рдкрд░ рдЖрдкрдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдЯреВрдЯреЗ рд╣реБрдП рдПрдирд┐рдореЗрд╢рди рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВ, рдкреЗрдЬ рдмрд┐рд▓реНрдХреБрд▓ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рдкреЗрдЬ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рдореВрд▓ рд░реВрдк рд╕реЗ рд░рд╛рдЙрдЯрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрджреНрджрд╛ рд╣реИред
рдореИрдВ https://code.ionicframework.com/patch/ios9- $browser-patch.js рдкрд░ рдкреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде iPhone 6 рдкрд░ Ionic рдмрдВрдбрд▓ 1.1.0 рдФрд░ iOS 9.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИрдВ:
рддреНрд░реБрдЯрд┐: [$ rootScope: infdig ] 10 $digest() рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ред рдЧрд░реНрднрдкрд╛рдд!
рдкрд┐рдЫрд▓реЗ рел рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкрд╣рд░реЗрджрд╛рд░реЛрдВ рдиреЗ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛: []
рдХреЛрдИ рд╕реБрдЭрд╛рд╡?
рдзрдиреНрдпрд╡рд╛рдж!
@scotopolis рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрдЧреЛрд░ рдХреЗ рдкреИрдЪ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА: https://gist.github.com/IgorMinar/863acd413e3925bf282c
@petebacondarwin рд╣рд╛рдВ рдзрдиреНрдпрд╡рд╛рдж, рдЗрдЧреЛрд░ рдХрд╛ рдкреИрдЪ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдкреГрд╖реНрда рд╕рдВрдХреНрд░рдордг рдПрдирд┐рдореЗрд╢рди рддрдбрд╝рдХрд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд╛рдЙрдЯрд░ рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдирдЬрд░ рд░рдЦреВрдВрдЧрд╛ред
рдпрд╣рд╛рдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдФрд░ @IgorMinar рд╕реЗ рдкреИрдЪ рдмреИрдХ рдмрдЯрди рдПрдирд┐рдореЗрд╢рди рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдм рдореИрдВ рд╡рд╛рдкрд╕ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдмрдирдиреЗ рд╕реЗ рдкреАрдЫреЗ рд╣рдЯ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдЙрд╕ рджреГрд╢реНрдп рдореЗрдВ рдПрдирд┐рдореЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдЬреАрдмред
рдЕрдм рддрдХ рдореБрдЭреЗ рдЖрдпрдирд┐рдХ рд╕реЗ рд░рд╛рддреНрд░рд┐рдХрд╛рд▓реАрди рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди iOS9 рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реИред
var userAgent = navigator.userAgent,
isIOS9 = /(iPhone|iPad|iPod).* OS 9_\d/.test(userAgent) && !/Version\/9\./.test(userAgent);
рдореИрдВрдиреЗ рдЕрднреА рдкреИрдЪ рдХреЗ v1.1.0 рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рд╣реИ: https://gist.github.com/IgorMinar/863acd413e3925bf282c
рдЖрдпрдирд┐рдХ рдЯреАрдо рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрдм рдкреИрдЪ рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред
рдХреГрдкрдпрд╛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рддреЛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ. (рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдХреЗ v1.1.0 рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред
рд╣рдо рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдХреЛрдгреАрдп v1.4.6 рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкреИрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред
рдкреИрдЪ рдХрд╛ рдпрд╣ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж @IgorMinar!
рдХреНрдпрд╛ рдЬрд╛рд░реА 1.4.6 рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд░рддрд╛ рд╣реИ?
@ alexislg2 - рд╣рд╛рдБ рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдкреИрдЪ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рдкрдбрд╝реЗред
рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ, рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд╕ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ Apple рдЕрдиреБрдореЛрджрди рдХреЗ рд▓рд┐рдП 2 рд╕рдкреНрддрд╛рд╣ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ;-(
@dbroadhurst рдореИрдВрдиреЗ рд╕реБрдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдЕрдкрдиреЗ рдЕрдкрдбреЗрдЯ рдХреЛ рддреЗрдЬреА рд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://openradar.appspot.com/22186109 рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡реЗрдмрдХрд┐рдЯ рдмрдЧ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирдорд╕реНрддреЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ Angular.js рдкрд░ рд╣реИрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ iOS9 async рдХреЙрд▓ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╢реЛрдз рдХрд┐рдпрд╛ рд╣реИ, рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рднреА рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдм рддрдХ рдореБрдЭреЗ рдорд┐рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЗ рдХреЛрдгреАрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣реИред рдЬреЗрдПрд╕ рдкреИрдЪред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдгреАрдп рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдореИрдВ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдкрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ
рд╣реИрд╢ рд░реВрдЯрд┐рдВрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣рд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди
рдХреНрдпрд╛ рдЖрдк рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдЖрдкрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдФрд░ рдареАрдХ рдХрд┐рдпрд╛?
@lchenneberg - AngularJS рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдпрд╣рд╛рдБ рд╣реИ https://github.com/angular/angular.js/commit/8d39bd8abf423517b5bff70137c2a29e32bff76d
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рдЕрдЧрд▓реЗ рд░рди рддрдХ window.location.href
рдХреЗ рдорд╛рди рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЙрд╕ рдореВрд▓реНрдп рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рддреБрд░рдВрдд рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдкрдврд╝реЗрдВ рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИ:
console.log(window.location.href) // -> http://my.domain.com/path/to/page
window.location.href = 'http://my.domain.com/path/to/other/page';
console.log(window.location.href) // -> http://my.domain.com/path/to/page
// next tick of the event loop
console.log(window.location.href) // -> http://my.domain.com/path/to/other/page
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреВрд╕рд░рд╛ console.log
рдкреБрд░рд╛рдирд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдирдпрд╛ рдорд╛рди рдирд╣реАрдВред рд╡рд░реНрддрдорд╛рди рдИрд╡реЗрдВрдЯ рд▓реВрдк рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдорд╛рди рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рддреАрд╕рд░реЗ console.log
рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╣рдордиреЗ рдЬреЛ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдЙрд╕ рдореВрд▓реНрдп рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╣рдордиреЗ рд▓рд┐рдЦрд╛ рдерд╛, рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрд╕ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП window.location.href
рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдХреЗ рдмрдЬрд╛рдп, рдЬрдм рддрдХ рдПрдХ hashchange
рдШрдЯрдирд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЦреБрдж рдХреЛ рд╕реБрд▓рдЭрд╛ рд▓рд┐рдпрд╛ рд╣реИред
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреА рдорджрдж рд╣реЛрдЧреАред
@IgorMinar рдХреЗ рдкреИрдЪ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореИрдВ рдХреЛрдгреАрдп рдФрд░ рдЖрдпрдирд┐рдХ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
window.ionic.version "1.0.1"
angular.version
Object {full: "1.3.13", major: 1, minor: 3, dot: 13, codeName: "meticulous-riffleshuffle"}
@IgorMinar рдХреЗ рдкреИрдЪ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж!!
рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЬрд╡рд╛рдм рдЖрдк рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рджреЗ рд╕рдХрддрд╛ рд╣реИ:
рдпрд╛, рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдирд╛рдЗрдЯреНрд░реЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЗрдВрдЬрди рдХрд╛ рдлрд╛рдпрджрд╛ рд╣реЛрддрд╛ рд╣реИ?
@tpeiffer рд╡реЗ
рдирдорд╕реНрддреЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдгреАрдп рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдареАрдХ рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ: 1.0.6
рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рд╕реБрдзрд╛рд░ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдзрдиреНрдпрд╡рд╛рджред
@tzamora рдХреНрдпрд╛ рдЖрдкрдиреЗ @IgorMinar рдХрд╛ рдкреИрдЪ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рд╢рд╛рдпрдж 1.0.6 рдЗрд╕рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИред
@petebacondarwin @IgorMinar рдХрд╛ рдкреИрдЪ browser.js рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ browser.js рдирд╛рдо рдХреА рдХреЛрдИ рдлрд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ
FYI рдХрд░реЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рджреВрд╕рд░реЗ рджрд┐рди WebKit рдореЗрдВ рдЖрдпрд╛:
http://trac.webkit.org/changeset/190092
http://trac.webkit.org/changeset/190100
рдореБрдЭреЗ рдпрд╣ рдЬреЗрдПрд╕ рдкреИрдЪ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ рдирд╣реАрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдирдпрд╛ (angularjs рдФрд░ Ionic) рддреЛ рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдХреБрдЫ рднреА рдмрдбрд╝рд╛ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИ рддреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ! (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдордВрдЪ рд╡рд╕реНрддреБ рдмрд╣реБрдд рдЕрдХреНрд╖рдо рд╣реИ рдЖрджрд┐)
рдзреНрдпрд╛рди рджреЗрдВ:
function isIOS9UIWebView(userAgent) {
return (/9\.[0-9]\.[0-9]/.test(ionic.Platform.version()) && /iOS/.test(ionic.Platform.device() ));
//return true;
//return (navigator.userAgent.indexOf(' OS 9') != -1) && (navigator.appVersion.indexOf(' OS 9') != -1);
//return /(iPhone|iPad|iPod).* OS 9_\d/.test(userAgent) && !/Version\/9\./.test(userAgent);
// only provide the patch for iOS9 on UIWebView
}
рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ 8.4 рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рднрд╛рдЧ рдЧрдпрд╛; рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЖрдИрдУрдПрд╕ 9 рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдореИрдВрдиреЗ рдЖрдИрдУрдПрд╕ 8 рдФрд░ 9 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдЬреЗрдВрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪреЗрдХ рдХреЛ рдЕрднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдЬреЗрдВрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред
"рдореЛрдЬрд╝рд┐рд▓рд╛/5.0 (iPhone; CPU iPhone OS 8_4 рдЬреИрд╕реЗ Mac OS X) AppleWebKit/600.1.4 (KHTML, рдЬреИрд╕реЗ Gecko) рдореЛрдмрд╛рдЗрд▓/12H141 (140307121489296)"
+1
рдирдорд╕реНрддреЗ
рдХреНрдпрд╛ рдХреЛрдИ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдИрдУрдПрд╕ 9.2 рдкрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? (рдмреАрдЯрд╛)
рдзрдиреНрдпрд╡рд╛рдж :)
рдореИрдВ рдЖрдИрдлреЛрди 6 рдкрд░ рдЖрдИрдУрдПрд╕ 9.2 (13рд╕реА75) рдХреЗ рдЗрд╕ рдореЙрд░реНрдирд┐рдВрдЧ рдЕрдкрдбреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЛрд╣рд░рд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ред рдЕрдм рддрдХ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмрдЧ рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ - https://openradar.appspot.com/22186109
рдпрджрд┐ рдпрд╣ рдкреИрдЪ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ iOS 9.2 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХреЛрдИ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдРрдк рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реА рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕рднреА рдкреИрдЪ рдПрдХ рд░реЗрдЧреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдИрдУрдПрд╕ 9 рдФрд░ рдКрдкрд░ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 9.x рддрдХ рдФрд░ 9.1 рд╕рд╣рд┐рдд рдирд╣реАрдВред
рд╣реЗ рджреЛрд╕реНрддреЛрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ iOS 9 рдХреЗ рд╕рд╛рде iPhone 6 рдореЗрдВ рд╣реЛ рд░рд╣реА рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ?
https://forum.ionicframework.com/t/ios-9-beta-slide-menu-app-transition-issue/30768
рдПрдХ рдФрд░ рдкреИрдЪ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╕реНрдХреНрд░реАрди рдУрд╡рд░рд▓реИрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
IOS 9.2 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред
@ рдмреНрд░реВрдиреЛ-рд╕рд░реНрдлрд╝ рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдХрд┐ рдЖрдИрдУрдПрд╕ window.location
рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдЖрдИрдУрдПрд╕ 9.0.x рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдпрджрд┐ рдЖрдк рдХреЛрдгреАрдп 1.4.6+ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдлрд┐рдХреНрд╕ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ https://github.com/angular/angular.js/issues/12241#issuecomment -139446288 рдкрд░ рдПрдХ рд╣реА рдлрд┐рдХреНрд╕ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ iOS 9.0.x рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ iOS 9.1.0 рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЖрдпрдирд┐рдХ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореБрджреНрджрд╛ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╣реА рдлрд┐рдХреНрд╕ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
@lgalfaso рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдПрдХ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ, рдЕрдЧрд░ рд╡рд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдХреЛрдгреАрдп рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛, рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдзрдиреНрдпрд╡рд╛рдж @lgalfaso : +1:
рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реБрдИ рдЬрдм рдореИрдВрдиреЗ рд╡реЗрдм рдРрдк рдХреЛ рд╣реЛрдо рд╕реНрдХреНрд░реАрди рдкрд░ рдЬреЛрдбрд╝рд╛ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ 1.4.5 рд╕реЗ 1.5 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдИ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рдирд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛!
@volgwfang рдЖрдкрдХреЗ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рдЖрдЧреЗ рдмрдврд╝реЗред рдореИрдВрдиреЗ рд╕реНрдерд╛рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреЛрдгреАрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рд╣реИред
"рдЕрдкрдбреЗрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░" рднрд╛рдЧ рдореЗрдВ, рдореИрдВрдиреЗ $rootScope.$evalAsync рдХреЛ $rootScope.$applyAsync рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдВ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдЕрдВрддрд░ рддрдм рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрдм рддрдХ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ $digest рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддреЗред рдЬрдм AngularJS рдПрдХ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдХреЛрдк рдЯреНрд░реА рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ $watch() рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдФрд░ рдЧрдВрджрд╛ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЗ рджреМрд░рд╛рди, $applyAsync() рдХреНрдпреВ рдФрд░ $evalAsync() рдХреНрдпреВ рджреЛрдиреЛрдВ рдлрд╝реНрд▓рд╢ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ; рд▓реЗрдХрд┐рди, рдпрд╣ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдЧрд╣реЛрдВ рдкрд░ рд╣реЛрддрд╛ рд╣реИред
$applyAsync() рдХрддрд╛рд░ рдХреЗрд╡рд▓ $digest рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдлрд╝реНрд▓рд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ AngularJS рдЧрдВрджреЗ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдБрдЪ рд╢реБрд░реВ рдХрд░реЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, $applyAsync() рдХрддрд╛рд░ рдХреЛ $digest рдХреЗ рджреМрд░рд╛рди рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рдмрд╛рд░ рдлреНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ рддрднреА рдлрд╝реНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдХрддрд╛рд░ $digest рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдкреЙрдкреНрдпреБрд▓реЗрдЯ рд╣реЛ рдЧрдИ рд╣реЛред
рджреВрд╕рд░реА рдУрд░, $evalAsync() рдХрддрд╛рд░, рдЙрд╕ рд╕рдордп-рд▓реВрдк рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдлрд╝реНрд▓рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ $digest рдХреЗ рдЕрдВрджрд░ "рдбрд░реНрдЯреА рдЪреЗрдХ" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЗ рджреМрд░рд╛рди $evalAsync() рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдХрд┐рд╕реА рднреА рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдЙрд╕реА рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдореЗрдВ рдмрд╛рдж рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ $evalAsync() рджреНрд╡рд╛рд░рд╛ $watch() рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рднреАрддрд░ рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЙрд╕реА рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред рдПрдХ $watch() рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рднреАрддрд░ рд╕реЗ $applyAsync() рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдмрд╛рдж рдХреЗ рд╕рдордп (~10ms) рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ :-)ред