【发布时间】:2014-11-27 08:55:10
【问题描述】:
我的网页上有一个链接,该链接使用target="_blank" 打开一个新标签。它还有一个绑定到它的click 事件,当用户单击链接时也应该触发。
但是,在移动设备上(目前在 iOS7 上使用 Chrome 进行测试),当用户单击链接时,我似乎无法触发此事件。该链接应在新选项卡中打开,但该事件似乎没有触发 - 尽管当我在 Chrome 上的移动模拟器中进行测试时,它确实触发了。我尝试绑定到click、touchstart 和touchend 事件,但它们似乎都不起作用。
当用户在移动设备上点击 <a target="_blank"> 标记时,我如何才能触发点击或触摸事件?
以下是我目前使用的代码。虽然项目是 Angular 的,但我提供了 Angular 和 jQuery 版本,因为事件处理程序不是 Angular 特定的。
Angular 版本(包括项目中的ngTouch):
<a id="mylink" href="http://external-link.com" target="_blank"
ng-click="functionToBeCalled()"
>Click me!</a>
Angular 版本 2:
<a id="mylink" href="http://external-link.com" target="_blank"
on-touch="functionToBeCalled()"
>Click me!</a>
<script>
angular.module('myModule').directive('onTouch', function () {
return {
scope: {onTouch: '&'},
link: function (scope, elem, attr) {elem.bind('touchstart', function(){scope.onTouch();});}
}
});
</script>
jQuery 中的等价物:
<script>
$('#mylink').bind('touchstart', function () {
console.log("Touch event was fired!");
});
</script>
【问题讨论】:
标签: javascript jquery angularjs events mobile