打印

[服务器端交互] 让flash的弹出窗口不再被拦截

在ultrashock看到的,效果不错,共享之。

原文地址:http://www.ultrashock.com/forums ... solution-92036.html

正常如果我们在flash里执行open window的话,都会被浏览器给拦截了,需要点一下允许弹出窗口才行,因为flash是在它自己的容器里,而不是document里,所以无法取得浏览器的信任,那要取得浏览器的信任,就需要做一点小动作。

把wmode设置为opaque或者transparent,这样就能把flash添加到dom里,从而取得浏览器的信任。但如果这样设置的话,flash激活的时候,周围会有虚框,所以还要做一下手脚,就是把outline的属性设置为none。
复制内容到剪贴板
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>     
<title></title>     
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>   
<style type="text/css">         
object{            
    width:800px;            
    height:500px;            
    display:block;        
}         
object:focus{            
    outline:none;        
}        
</style>     
</head>   
<body>
    <object id="flash" type="application/x-shockwave-flash" data="movie.swf">        
    <param name="movie" value="movie.swf"/>        
    <param name="wmode" value="opaque"/>   
    </object>
</body>
</html>
AS
复制内容到剪贴板
代码:
import flash.external.ExternalInterface;
function openWindow(){
    var url:String = "http://www.blueidea.com";
    var windowName:String = "mywindow";
    var windowOptions:String = "width:800,height:600";
    ExternalInterface.call("window.open",url,windowName,windowOptions);
}
stage_btn.onRelease = function() {
    openWindow();
};
通过ExternalInterface,这样就不用去劳烦js里,直接在flash里面就可以搞定了。

demo:
http://www.live-my-life-with-yuyi.com/misc/demo/open_window/

ps:偶然发现,adobe官网也有相关文章
http://www.adobe.com/cn/support/ ... s/popup_windows.htm

[ 本帖最后由 lzyy 于 2008-4-25 08:47 编辑 ]
本帖最近评分记录
  • HBrO 威望 +1 我很赞同 2008-4-25 02:44
学习!
谢谢版主
月度好帖!
demo:
http://www.live-my-life-with-yuyi.com/demo/open_window/

还是有虚线框呀,IE7!

TOP

更新了一下,其实这个不是针对虚框的,呵呵

TOP

TOP

发布的时候同时发布html的话,不是自动生成一个js文件AC_FL_RunContent么。那个文件好像也有这个功能吧。配合
'wmode', 'Opaque',在js里面。这样可以取得信任,弹出窗口,也没问题。。。。。。

TOP

回复 twostone 在 6# 的帖子

已修正,嘿嘿

TOP

回复 diamondian 在 7# 的帖子

恩,主要是应用了womde的Opaque属性

TOP