如何让网页上的Flash视频在弹出窗口中播放
1个回答
展开全部
很多浏览器都有这个功能,当你把鼠标移动到网页视频上,就可以看到顶部有一个按钮出现,弹出独立播放器。当你点击按钮,视频就弹出在新窗口播放了,这时候视频窗口的大小可以自由调整不再受页面的限制。
另一个想法是,把页面里视频相关的HTML代码提取出来,然后在一个新页面框架里显示。但是这样的话,就必须对页面代码的结构非常熟悉,而且必须跟随变化。还有,当新视频窗口弹出时,播放进度是不能保持的,必须重头播放。
其实有一个简单的办法,那就是把页面里的Flash控件重新激活到另一个窗口上。因为我们知道,Flash其实是一个ActiveX控件,运行在IE容器里。如果我们创建一个新的Ole Container,就可以把Flash控件激活到新的Container里。这样,Flash控件就可以在保持状态的情况下在不同的容器之间转换,既自由的在页面和弹出窗口中切换。
所以,要弹出(IE)页面里的Flash视频,需要以下几步:
1. 02通过Web Browser控件或者BHO,在页面加载完成后得到页面的DOM模型,找到Embed节点对象,即可查到Flash空间。
2. 02创建Ole容器,比如ATL的CAxWindow
3. 02激活Flash控件到新的Ole容器
代码片段(基于ATL):
//pFlashDisp为Flash控件对象,通过分析页面DOM获得
//保存IE容器,用于恢复
CComQIPtr<IOleObject spFlashOleObj = pFlashDisp;
spFlashOleObj-GetClientSite(&m_spIESite);
//必选先关闭,才能转移到新的窗口上
另一个想法是,把页面里视频相关的HTML代码提取出来,然后在一个新页面框架里显示。但是这样的话,就必须对页面代码的结构非常熟悉,而且必须跟随变化。还有,当新视频窗口弹出时,播放进度是不能保持的,必须重头播放。
其实有一个简单的办法,那就是把页面里的Flash控件重新激活到另一个窗口上。因为我们知道,Flash其实是一个ActiveX控件,运行在IE容器里。如果我们创建一个新的Ole Container,就可以把Flash控件激活到新的Container里。这样,Flash控件就可以在保持状态的情况下在不同的容器之间转换,既自由的在页面和弹出窗口中切换。
所以,要弹出(IE)页面里的Flash视频,需要以下几步:
1. 02通过Web Browser控件或者BHO,在页面加载完成后得到页面的DOM模型,找到Embed节点对象,即可查到Flash空间。
2. 02创建Ole容器,比如ATL的CAxWindow
3. 02激活Flash控件到新的Ole容器
代码片段(基于ATL):
//pFlashDisp为Flash控件对象,通过分析页面DOM获得
//保存IE容器,用于恢复
CComQIPtr<IOleObject spFlashOleObj = pFlashDisp;
spFlashOleObj-GetClientSite(&m_spIESite);
//必选先关闭,才能转移到新的窗口上
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询