Neues Initialrelease mit IonicMaterial
This commit is contained in:
75
www/lib/ngIOS9UIWebViewPatch/angular-ios9-uiwebview.patch.js
Normal file
75
www/lib/ngIOS9UIWebViewPatch/angular-ios9-uiwebview.patch.js
Normal file
@@ -0,0 +1,75 @@
|
||||
/**
|
||||
* ================== angular-ios9-uiwebview.patch.js v1.1.1 ==================
|
||||
*
|
||||
* This patch works around iOS9 UIWebView regression that causes infinite digest
|
||||
* errors in Angular.
|
||||
*
|
||||
* The patch can be applied to Angular 1.2.0 – 1.4.5. Newer versions of Angular
|
||||
* have the workaround baked in.
|
||||
*
|
||||
* To apply this patch load/bundle this file with your application and add a
|
||||
* dependency on the "ngIOS9UIWebViewPatch" module to your main app module.
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
* ```
|
||||
* angular.module('myApp', ['ngRoute'])`
|
||||
* ```
|
||||
*
|
||||
* becomes
|
||||
*
|
||||
* ```
|
||||
* angular.module('myApp', ['ngRoute', 'ngIOS9UIWebViewPatch'])
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* More info:
|
||||
* - https://openradar.appspot.com/22186109
|
||||
* - https://github.com/angular/angular.js/issues/12241
|
||||
* - https://github.com/driftyco/ionic/issues/4082
|
||||
*
|
||||
*
|
||||
* @license AngularJS
|
||||
* (c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
angular.module('ngIOS9UIWebViewPatch', ['ng']).config(['$provide', function($provide) {
|
||||
'use strict';
|
||||
|
||||
$provide.decorator('$browser', ['$delegate', '$window', function($delegate, $window) {
|
||||
|
||||
if (isIOS9UIWebView($window.navigator.userAgent)) {
|
||||
return applyIOS9Shim($delegate);
|
||||
}
|
||||
|
||||
return $delegate;
|
||||
|
||||
function isIOS9UIWebView(userAgent) {
|
||||
return /(iPhone|iPad|iPod).* OS 9_\d/.test(userAgent) && !/Version\/9\./.test(userAgent);
|
||||
}
|
||||
|
||||
function applyIOS9Shim(browser) {
|
||||
var pendingLocationUrl = null;
|
||||
var originalUrlFn= browser.url;
|
||||
|
||||
browser.url = function() {
|
||||
if (arguments.length) {
|
||||
pendingLocationUrl = arguments[0];
|
||||
return originalUrlFn.apply(browser, arguments);
|
||||
}
|
||||
|
||||
return pendingLocationUrl || originalUrlFn.apply(browser, arguments);
|
||||
};
|
||||
|
||||
window.addEventListener('popstate', clearPendingLocationUrl, false);
|
||||
window.addEventListener('hashchange', clearPendingLocationUrl, false);
|
||||
|
||||
function clearPendingLocationUrl() {
|
||||
pendingLocationUrl = null;
|
||||
}
|
||||
|
||||
return browser;
|
||||
}
|
||||
}]);
|
||||
}]);
|
||||
Reference in New Issue
Block a user