Я пытаюсь реализовать анимацию с помощью ng-animate
для кнопки в гибридном приложении Android, в котором я использую WebView
.
Анимированная кнопка выглядит так:
<div class="dish-like dish-like-animater">
<img ng-hide="page.liked" class="dish-like-unliked" src="http://dev.fotodish.com/img/[email protected]" ng-click="Like()">
<img ng-show="page.liked" class="dish-like-liked-up" src="http://dev.fotodish.com/img/[email protected]">
<img ng-show="page.liked" class="dish-like-liked-down" src="http://dev.fotodish.com/img/[email protected]" ng-click="Unlike()">
</div>
Подробности смотрите в этой скрипте: http://jsfiddle.net/QcH8m/
Я протестировал анимацию на настольном Chrome, Samsung Galaxy S4 и Moto G. И в настоящее время анимация отлично работает во всех следующих средах:
- рабочий стол Chrome,
- Браузер Android («Интернет») на этом Galaxy S4,
- Chrome на этом Galaxy S4,
- Chrome на этом Moto G,
- WebView на этом Moto G
Однако, когда я попытался запустить его в WebView на этом Galaxy S4, его поведение было довольно странным. В самом начале, до того, как я нажал на него, все выглядело нормально, было ли page.liked
истинным или ложным. Однако, когда я нажал на нее, все просто исчезло. И произошла ошибка. Трассировка стека была такой:
03-21 16:40:32.412 6019-6019/com.fotodish.android E/Web Console﹕ TypeError: undefined is not a function
at file:///android_asset/www/bower_components/angular/angular.js:11330:9
at afterReflow (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:1092:11)
at Object.fn (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:1585:13)
at file:///android_asset/www/bower_components/angular-animate/angular-animate.js:450:46
at Array.forEach (native)
at forEach (file:///android_asset/www/bower_components/angular/angular.js:322:11)
at run (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:438:11)
at Object.before (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:471:13)
at performAnimation (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:897:16)
at Object.removeClass (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:702:11):9509
03-21 16:40:32.432 6019-6019/com.fotodish.android E/Web Console﹕ TypeError: undefined is not a function
at file:///android_asset/www/bower_components/angular/angular.js:11330:9
at afterReflow (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:1092:11)
at Object.fn (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:1585:13)
at file:///android_asset/www/bower_components/angular-animate/angular-animate.js:450:46
at Array.forEach (native)
at forEach (file:///android_asset/www/bower_components/angular/angular.js:322:11)
at run (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:438:11)
at Object.before (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:471:13)
at performAnimation (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:897:16)
at Object.removeClass (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:702:11):9509
Я использую angular 1.2.14 и angular-animate 1.2.14. В то же время другая анимация, касающаяся ng-view
, работает нормально...
Настройки WebView такие:
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setDatabasePath("/data/data/" + this.getPackageName() + "/databases/");
webSettings.setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
Galaxy S4 работает под управлением Android 4.3, оригинальной версии Samsung. Moto G также работает под управлением Android 4.3.
Строка UserAgent этого Galaxy S4:
Mozilla/5.0 (Linux; U; Android 4.3; en-us; SAMSUNG-SGH-I337 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Кто-нибудь знает, что произошло?