【问题标题】:Can't detect jQuery click on vimeo iframe无法检测到 jQuery 点击 vimeo iframe
【发布时间】:2012-11-16 10:44:38
【问题描述】:

简单的 Vimeo iframe 点击不起作用:

$('iframe').click(function(){
    alert('ok');
});

我也试过了:

$('body').click(..
$(document).on('click','iframe',..

但是当用户在悬停视频的同时点击视频时,没有任何效果,它只是播放视频。

【问题讨论】:

标签: javascript jquery video click vimeo


【解决方案1】:

试试这个:

$('iframe').contents()
           .find('[src*="vimeo.com"]')
           .click(
               function(){
                  alert('foo');
               }
            );

【讨论】:

    【解决方案2】:

    如果您在嵌入代码中包含查询参数api=1,则可以访问事件,包括当用户点击 iframe 中的视频(播放、暂停)时触发的事件。您可能还希望包含他们的froogaloop.js 文件,以便更轻松地访问这些事件。

    <iframe id="player1" src="http://player.vimeo.com/video/27855315?api=1&player_id=player1" width="400" height="225"></iframe>
    

    【讨论】:

    • +1 从我这里得到了很好的答案,但你不能展示一种替代和更简单的方法来使用 jsFiddle 点击 iframe 吗?比我给你赏金(:
    • 无论如何,我们似乎没有其他方法可以在没有 api 的情况下检测 lick,赏金是你的。
    【解决方案3】:

    很遗憾,正如 epascarello 之前所说,由于同源政策,您无法跟踪跨域 iframe 中的点击次数。

    您可以设置用户单击的“缩略图”,这将拉出该弹出窗口,然后将缩略图替换为实际视频。只需嵌入您想要的视频,但将其保留为隐藏的 div,然后在您希望它开始播放时使用 .show()

    Source

    【讨论】:

    • 感谢您的回报,但您可以比这位伙伴玩得更好,jsFiddle在哪里工作?
    • 我们可以使用 vimeo api 来检测它。
    【解决方案4】:

    我发现,在找到 iframe 中的任何内容之前,我需要确定 iframe 是否已加载。然后,如果 iframe 在页面加载后加载或稍后重新加载,您的点击功能将起作用。

    jQuery('#iframe').load(function() {
       jQuery('#iframe').contents().find('#play-button').click(function () {
            // do your stuff
        });
    }
    

    ** 这可能会或可能不会跨域工作,但确定加载的 iframe 是否可以用作确定 iframe 中是否发生某些事情的骇人听闻的方法。如果您在 iframe 顶部的域上创建了一个“播放”按钮,则它可用于在页面加载后通过单击功能加载 iframe,然后您的加载功能可以包含幻灯片暂停。

    【讨论】:

      【解决方案5】:

      它是iframe中的第三方domian,因为same origin policy,你不能这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多