触摸事件未在 iOS <a> 标记上触发
Touch event not firing on iOS <a> tag
我的网页上有一个链接,使用 target="_blank"
打开到一个新选项卡。 它还具有绑定到它的click
事件,当用户单击链接时也应触发。
但是,在移动设备上(现在在iOS7上使用Chrome进行测试),当用户单击链接时,我似乎无法触发此事件。 该链接将在新选项卡中打开,但该事件似乎没有触发——尽管当我在 Chrome 上的移动模拟器中进行测试时,它确实触发了。 我尝试绑定click
、touchstart
和touchend
事件,但似乎都不起作用。
当用户在移动设备上点击<a target="_blank">
代码时,如何触发点击或触摸事件?
以下是我到目前为止使用的代码。 虽然该项目是 Angular 的,但我提供了 Angular 和 jQuery 版本,因为事件处理程序不是特定于 Angular 的。
角度版本(包括项目中的ngTouch
):
<a id="mylink" href="http://external-link.com" target="_blank"
ng-click="functionToBeCalled()"
>Click me!</a>
角度版本 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>
元素的默认行为将覆盖您执行的触摸事件处理。为什么要触发触摸事件并同时具有默认链接行为?
你可以做一个 preventDefault:
<script>
$( "a" ).click(function( event ) {
event.preventDefault();
open link here with function
handle touch here with function
});
</script>
并使用脚本处理所有内容。您可以通过脚本从那里在新窗口中启动链接,也可以从那里触发触摸事件。
相关文章:
- 触摸启动事件未在iframe iOS 6中启动
- Phonegap iOS-设备准备不发射其他事件做
- jQuery ContextMenu事件在IOS 8.2中不起作用
- Javascript touchend(滚动)事件在ios 4中的UIWebView中不起作用
- iOS/HTML5上的视频相关事件跟踪
- iOS 上的 TouchMove 事件
- 在iOS上处理jQuery Mobile点击事件后,阻止点击事件
- iOS上未触发HTML5视频事件
- WebView中的Html页不会激发'可见性更改'用户按下主页按钮时的事件(iOS 8)
- 如何在 iOS 设备上使用 JavaScript(或 CSS)添加点击事件
- iOS Touch 事件在 DOM 插入时传递
- 在 iFrame 中滚动事件侦听器在 iOS 上不起作用
- 触摸事件对位置:固定;元素在 iOS 上无法正常工作
- 在 iOS 中,哪些 JavaScript 事件符合 HTML5 视频/音频的“用户启动”条件
- 在 Safari 浏览器 (iOS 7) 上,在捏合缩放下调整事件大小,仅在横向缩放中
- 科尔多瓦 iOS 按钮事件
- 在 iOS 上照片擦除图库关闭事件
- iOS uiwebview在加载整个html文件之前触发finishLoad事件
- 使用iOS 8“扫描信用卡”功能时,输入字段上触发了什么JS事件
- Javascript版的iOS's '事件,但针对android