Jquery 在iOS设备上的iframe中未触发单击/点击事件

Jquery 在iOS设备上的iframe中未触发单击/点击事件,jquery,ios,iframe,video,jwplayer,Jquery,Ios,Iframe,Video,Jwplayer,我有一个iframe实例,其中包含一个带有单击处理程序的元素。iframe包含一个视频,视频上有一个播放按钮图形,上面有一个点击事件。单击事件触发视频播放、隐藏自身和控制台。记录一条消息,表示已触发 在桌面浏览器上,以及当我直接导航到iOS设备上的iframe url时,这项功能非常完善。但是,当iframe嵌入时,不会触发播放按钮的单击/点击事件 以下是我的示例链接: 视频页面的直接链接:(在iOS上正常工作) 指向带有视频iframed的页面的链接:(不触发单击/点击事件) 事件所附加的

我有一个iframe实例,其中包含一个带有单击处理程序的元素。iframe包含一个视频,视频上有一个播放按钮图形,上面有一个点击事件。单击事件触发视频播放、隐藏自身和控制台。记录一条消息,表示已触发

在桌面浏览器上,以及当我直接导航到iOS设备上的iframe url时,这项功能非常完善。但是,当iframe嵌入时,不会触发播放按钮的单击/点击事件

以下是我的示例链接:

视频页面的直接链接:(在iOS上正常工作)

指向带有视频iframed的页面的链接:(不触发单击/点击事件)

事件所附加的文件/行号位于
/js/jm/video player.js
~第52行,如下所示:

els.playButton.on('click tap', function(){
    console.log('tapped');
    els.playButton.fadeOut(100);
    els.videoPauseItems.fadeOut(100);
    jwplayer(container).play();
});
嵌入式iframe版本的代码不仅不会触发视频,而且不会触发console.log或元素淡出。我可以看到,当点击播放按钮时,元素闪烁着一种超快速的不透明度/反馈状态,我认为这与浏览器有关

奇怪的是,当我删除play按钮元素时。只需让用户直接单击
元素即可。视频播放得很好。我可以理解这是一种方式还是另一种方式(没有点击成功,或者只是视频播放没有触发),但好像整个playButton的点击处理程序都被忽略了

注: 我必须为此内容使用iframe,因为不能保证其内容与父页面来自同一域(类似地,这会阻止我创建iframe内容的外部控件)

任何帮助都将不胜感激。先谢谢你

EDIT1:根据请求,我在示例链接的右上角添加了一个点击/点击绑定到“N”(我知道这是一个小的点击框,对不起)

els.videoPauseItems.css('z-index', '600').on('click tap', function(){
    console.log('non play button tapped');
});
当在
iframe
中点击此按钮时,我没有得到console.log。但我确实收到了浏览器的快速灰色闪光点击反馈。但是,当检查该元件时,我可以看到它已成功应用了
.css()
调整。
在查看不在
iframe
中的链接时点击,它会成功地
控制台。log
似乎有人阻止正常触摸事件流的默认操作:
touchstart
-
touchmove
-
单击
。这样就不会调用
click
事件。可能其他脚本通过调用
touchstart
touchend
事件的事件对象上的preventDefault()或从这些事件的事件侦听器返回
false
来实现这一点

要解决此问题,您可以在阻止事件之前拦截用户的“点击”。例如,使用
touchstart
事件:

var ranOnce = false;
els.playButton.on('click tap touchstart', function() {
    // If both click and touchstart events are fired,
    // then make sure that this function isn't executed twice if click
    if (ranOnce) return;
    ranOnce = true;

    console.log('tapped');
    els.playButton.fadeOut(100);
    els.videoPauseItems.fadeOut(100);
    jwplayer(container).play();
});
我通过iPhone上的Safari开发者工具运行了这段代码,视频按预期播放:


您是否尝试通过外部元素检查此问题,以查看是否有任何呼叫被触发?不是游戏按钮。只需一个简单的链接,就可以查看是否触发了console.log。@JWPlayer您的意思是像另一个附加了单击事件的按钮一样,只触发了console.log吗?但是在玩家初始化过程中不受约束吗?@EthanJWPlayer在主要问题中添加了编辑,并发布了结果。嗯,所以看起来这个问题不在玩家的范围内,那么,如果一个简单的控制台日志在基本按钮上不在玩家的范围外工作。@EthanJWPlayer,是的,我原本以为这和球员有关。。但这似乎是一个更深层次的问题。。我会继续看我是否能想出解决方案,因为iOS故意干扰。当鼠标移动事件导致DOM更改时,iOS不会触发单击事件。我已经做了自己的测试来解决这个问题,在鼠标事件发生100毫秒后,点击事件被忽略。