怎么让Flash播放完后自动关闭网页
作者:闪吧 类型:原创 来源:闪吧
怎么让Flash播放完后自动关闭网页
解决思路 在 Flash 的最后一帧写上关闭窗口的 ActionScript或者在网页中判断 Flash 的播放进度,到最后一帧时调用关闭窗口的方法。
具体步骤 方法一:用ActionScript和JavaScript结合的方法。
1.在 Flash 的最后一帧写 ActionScript。
getURL("javascript:closeit()")
2.然后在插入 Flash 的网页中写 Javascript 脚本的函数。
<script>
function closeit(){
var ObjStr=’<object id="Cls" classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 type=application/x-oleobject><param name="Command" value="CloseX"></object>’ //HHC控件的代码
if(parseInt(window.navigator.appVersion.split(";")[1].substr(5))>=6){ //如果IE版本在6.0以上,下面的方法关闭窗口
/*声明当前窗口的父窗口为空,相当于向浏览器说明当前窗口是子窗口,
可以直接用window.close()方法关闭*/
self.opener=’’
self.close() //关闭当前窗口
}
else{ //如果IE版本低于6.0,用HHC控件关闭窗口
//如果控件对象不存在,插入控件代码
if(!document.getElementById("Cls")) document.body.insertAdjacentHTML("BeforeEnd",ObjStr)
Cls.Click()
}
}
</script>
3.完整代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>关闭窗口测试</title>
<script>
function closeit(){
var ObjStr=’<object id="Cls" classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 type=application/x-oleobject><param name="Command" value="CloseX"></object>’ //HHC的控件代码
if(parseInt(window.navigator.appVersion.split(";")[1].substr(5))>=6){
self.opener=’’
self.close()
}
else{
if(!document.getElementById("Cls")) document.body.insertAdjacentHTML("BeforeEnd",ObjStr)
Cls.Click()
}
}
</script>
</head>
<body>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="150" height="100" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="closeit.swf" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffcc33" />
<embed src="closeit.swf" menu="false" quality="high" bgcolor="#ffcc33" width="150" height="100" name="demo" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>
方法二:完全 Javascript 控制。
<object id="movie" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="150" height="100" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="closeit.swf" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffcc33" />
<embed src="closeit.swf" menu="false" quality="high" bgcolor="#ffcc33" width="150" height="100" name="demo" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
<script defer>
setInterval(function(){if(movie.currentFrame()==movie.totalFrames-1)closeit()},100)
function closeit(){
var ObjStr=’<object id="Cls" classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 type=application/x-oleobject><param name="Command" value="CloseX"></object>’
if(parseInt(window.navigator.appVersion.split(";")[1].substr(5))>=6){
self.opener=’’
self.close()
}
else{
if(!document.getElementById("Cls")) document.body.insertAdjacentHTML("BeforeEnd",ObjStr)
Cls.Click()
}
}
</script>
注 意:完全用 Javascript 控制时需要设置 Flash 对象的 id 为 movie(可自定义其它名称,但脚本中的调用必须与之一致)
提 示:
1.如果 Flash 所在的窗口是用 window.open 方法打开的子窗口,可以直接在 Flash 的最后一帧中写 ActionScript:
getURL("javascript:window.close()")
2. Flash 与 Web 元素的交互,除了用 getURL 方法之外,还可以用 FSCommand,本例代码可改写如下:
Flash 最后一帧的 ActionScript 代码:
FSCommand("","")
在 Web 中跟 FSCommand 的通信接口(仅适用于IE浏览器):
<script language="vbscript">
sub movie_FSCommand(ByVal Command,ByVal args)
call closeit()
end sub
</script>
完整代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>关闭窗口测试</title>
<script language="javascript">
function closeit(){
var ObjStr=’<object id="Cls" classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 type=application/x-oleobject><param name="Command" value="CloseX"></object>’
if(parseInt(window.navigator.appVersion.split(";")[1].substr(5))>=6){
self.opener=’’
self.close()
}
else{
if(!document.getElementById("Cls")) document.body.insertAdjacentHTML("BeforeEnd",ObjStr)
Cls.Click()
}
}
</script>
<script language="vbscript">
sub movie_FSCommand(ByVal Command,ByVal args)
call closeit()
end sub
</script>
</head>
<body>
<object id="movie" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="150" height="100" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="closeit.swf" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffcc33" />
<embed name="movie" src="closeit.swf" menu="false" quality="high" bgcolor="#ffcc33" width="150" height="100" name="demo" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>
特别提示
本例代码运行后,在Flash插入完时将自动无提示的关闭当前窗口。
特别说明
本例介绍了在Flash中调用外部脚本的两个方法:getURL和FSCommand。因为前两例中已经介绍过getURL函数,所以下面只介绍FSCommand的用法。
fscommand("command", "parameters")
参数:
command 一个传递给宿主应用程序用于任何用途的字符串;或者一个传递给 Flash Player 的命令。
parameters 一个传递给宿主应用程序用于任何用途的字符串;或者一个传递给 Flash Player 的值。
若要在 Web 浏览器中使用 FSCommand 动作将消息发送到脚本撰写语言(如
JavaScript),可以在 command 和 parameters 参数中传递任意两个参数。这些参数可以是字符串或表达式,它们在“捕获”或处理 FSCommand 动作的 JavaScript 函数中使用。
在 Web 浏览器中,FSCommand 动作在包含 SWF 文件的 HTML 页中调用 JavaScript 函数 moviename_DoFScommand。moviename 是 Flash Player 影片的名称,该名称由 EMBED 标签的 NAME 属性指定,或者由 OBJECT 标签的 ID 属性指定。如果为 Flash Player 影片指定名称 myDocument,所调用的 JavaScript 函数就是 myDocument_DoFScommand。
责任编辑:kissall 时间:2005年8月29日
- 最近更新
