这是一个奇怪的问题,这是一些难以产生和探索的问题.
在使用Angular构建Web应用程序时,我的老板发现应用程序中使用ng-click
指令的所有按钮都不起作用.
现在,这个问题只发生在iphone 6 with IOS 8.3 and using the safari browser
.
我可以说,当在iPhone5(所有版本),iPhone 6(IOS 9),Safari for Windows和所有其他浏览器(移动和桌面)上进行测试时,ng-click
就像一个魅力.
该应用程序正在使用Angular 1.4.3
.
这是按钮的代码,正如您所看到的,没有什么特别之处:
在控制器中:
$scope.onCalculate = function () { //Do something... And then: $state.go('someplace'); };
我想在这里提出了许多变化,包括ng-touch
,ng-bind
,建设自己的点击指令,如下所示:
.directive('basicClick', function($parse, $rootScope) { return { compile: function(elem, attr) { var fn = $parse(attr.basicClick); return function(scope, elem) { elem.on('click', function(e) { fn(scope, {$event: e}); scope.$apply(); }); }; } }; });
找不到适合该问题的解决方案.
谢谢.
IOS 8.4.1更新有一个已知的问题,它阻止ng-link和ng-click工作.
使用"touchstart click"可以解决此问题.
app.directive("ngMobileClick", [function () { return function (scope, elem, attrs) { elem.bind("touchstart click", function (e) { e.preventDefault(); e.stopPropagation(); scope.$apply(attrs["ngMobileClick"]); }); } }])
HTML调用: ng-mobile-click="onCalculate()"
我把它修好了.
问题//Do something... And then:
出在功能部分.在此过程中的某个时刻,该功能会将一些数据保存到浏览器本地存储中.
我的老板在safari上使用隐私浏览,显然当在safari上使用隐私浏览时,浏览器不会保存本地存储上的数据并且它会抛出异常并杀死代码.
好吧,谢谢你.