当视频在页面上的 iframe 中完成时触发

Posted

技术标签:

【中文标题】当视频在页面上的 iframe 中完成时触发【英文标题】:Trigger when video completes in an iframe on a page 【发布时间】:2017-12-13 03:24:51 【问题描述】:

我在页面上的iframe 中有一个视频。我希望在视频结束时触发function,比如说alert("Finished");

因此,我想做两件事:

显示警报() 视频结束时触发警报。

视频在 iframe 中。

html

<div class="h5p-iframe-wrapper">
<iframe id="h5p-iframe-3" class="h5p-iframe h5p-initialized" data-content-id="3" style="height: 761px;" src="about:blank" frameborder="0" scrolling="no">

<video src="http://techslides.com/demos/sample-videos/small.mp4" webkit-playsinline="" playsinline="" preload="metadata" class="h5p-video" style="display: block;"></video>

</iframe></div>

这是我尝试过的

$("iframe").each(function()  
        var src= $(this).attr('src');
        $(this).attr('src',src);  
);

这有点行不通。

知道我能做什么吗?

【问题讨论】:

我认为这不可能,除非 iframe 和包含它的页面位于同一个域中。 如果你能发布你的代码的 JSfiddle 链接那就太好了:) 嗨,Aakash,我希望我可以。那个页面乱七八糟。 @Steve 你不能像这样将 iframe 包裹在另一个元素周围。除非不支持 &lt;iframe&gt;,否则 &lt;iframe src='...&gt;&lt;/frame&gt; 之间的任何内容都不会呈现。 AFAIK 所有浏览器都支持&lt;iframe&gt;,所以在&lt;frame&gt; 中放置&lt;video&gt; 标签是没用的。 @Steve 除非您的视频与您的网页位于同一域中,否则您无法完全访问 &lt;iframe&gt; 中的视频。见Same Origin Policy 【参考方案1】:

如果 iframe 中没有任何内容,为什么还要在 iframe 中观看视频?

这只是在div 中使用video 标签。

 $(".h5p-iframe-wrapper > video").on('ended',function()  alert('Video has ended!');  );

 $("div > video",".h5p-iframe-wrapper").on('ended',function()  alert('Video has ended!');  );

$(".h5p-iframe-wrapper").contents().find('video').on('ended',function() alert("Video has ended!"););

【讨论】:

谢谢,它给出了一些语法错误。说,Uncaught SyntaxError: Invalid or unexpected token 对不起,史蒂夫!现在怎么样?

以上是关于当视频在页面上的 iframe 中完成时触发的主要内容,如果未能解决你的问题,请参考以下文章

判断iframe加载完成用于当ifame加载完成时执行一些操作

只有当用户完成修改文本小部件时,我才能触发事件吗?

jQuery iframe 准备就绪

用于jquery的html5视频上的iOS“完成”回调按钮

Nuxt / Vuejs当页面完成呈现所有组件时将触发的事件

当页面加载完成时,JQ触发添加页面的元素的事件触发不了。。