iframe播放视频默认有声音,iframe视频自动播放

http://www.itjxue.com  2023-01-17 00:44  来源:未知  点击次数: 

怎么用js控制iframe视频广告声音

不可以。一般来说这个iframe里都是其他网站的页面,安全性不允许你进行操作

网页中在层里播放一个视频,关闭层后视频没有了,但是还是有声音,请问大家该怎么处理?

销毁该层,而不是隐藏,你是用hide(jquery)或者display:none(通过js来控制CSS,其实和jquery的hide方法本质一样)来控制的,这只是不显示,而其实层与层中的东西还是存在的,你必须销毁该层,等用到的时候重新加载,这样才OK

为什么用iframe嵌入视频没有声音

不推荐使用iframe,但是如果视频没声音不会是iframe的问题,检查下视频本身有没有问题。

重新加载时如何屏蔽加载声音?

请问iframe加载的页面和你的主页是同域吗?

如果是的话,我可以补充回答。如果不是,应该是办不到了。

-----------------------------------------------------------------

首先我很奇怪,既然同域,你应该可以修改到被iframe加载的页面吧?为什么要这么麻烦地在主页上去屏蔽声音呢?

不过不管你的理由是什么,既然是同域那就有办法了。

这个问题我以前也遇到过(非这么做不可,至于那奇怪的理由嘛我就不废话了),解决办法是在iframe页面加载完成之前,给iframe的页面动态添加一个script元素,然后由这个script去控制页面,使音乐停掉。

之所以要在iframe页面加载完成之前进行,是因为如果简单地用onload事件来做,很可能在你停掉音乐之前,音乐已经放了一小段时间了。当然,你可以自己测试一下,如果用onload就达到效果了,那就简单多了。如果不行,还得用下面的繁琐的办法。

为了能够达成在iframe的页面加载完成之前,对iframe的页面进行操作的目的,肯定得靠iframe的事件的帮助。经过我一番百度和测试,最终使用iframe的onreadystatechange事件实现这个功能。

我来说说原理吧,经测试,iframe加载页面时,readyState会经过'loading','interactive','complete'三个阶段。我估计吧,loading阶段,就是把源代码都读取完毕了,而interactive阶段,则是对代码进行解析,并逐个创建和添加元素,全部完成后就进入complete状态了。

这样的话,我们就可以在iframe进入interactive阶段时,向head段添加一个script元素了,于是就等效于修改了页面的源代码一样。

为什么是向head段加呢?一个是,可以保证添加的script最先被执行。第二呢,我记得当时测试过的,这个时候body元素好像根本就还没有被创建,所以只能加到head段里。

讲了这么多,你可能看得晕头转向了(不好意思,我解释得不好)。还是直接给你看段代码比较实际。

function iframe_onreadystatechange() {

if(iframe1.readyState == 'interactive') {

//获取head节点,创建一个script元素

var head = iwnd.document.documentElement.firstChild;

var el = iwnd.document.createElement('script');

//设置script的内容

el.text = "alert('test')";

//将script添加到head节点的最前面

head.insertBefore(el, head.firstChild);

}

}

这是我上次测试时用的代码,其中iframe1是我已经获取到了的iframe元素对象,iwnd则是iframe1.contentWindow,这两个变量你自己重新获取一下就行了。其他的就简单了,还写了注释哩,自己看看吧,只要给iframe加上onreadystatechange="iframe_onreadystatechange()"就行了。

方法就是这样了,码这点字码得我好辛苦呢!至于在head段加了script元素后,怎么让音乐停止,从你只求方法、不给亦即不求具体代码的提问方式来看,你应该自己能解决了吧?

(责任编辑:IT教学网)

更多

推荐Windows服务器文章