Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > PHP > Flash中“单击以激活并使用此控件”
【标  题】:Flash中“单击以激活并使用此控件”
【关键字】:Flash
【来  源】:http://blog.csdn.net/greenerycn/archive/2006/12/22/1454454.aspx

Flash中“单击以激活并使用此控件”

Your Ad Here

解决页面中解决的“单击以激活并使用此控件”的问题

http://www.linxz.cn/blog2/article.asp?id=40 

问题来源:
现在的Flash显示跟以前不同了,鼠标放上去会有一个虚线框,有提示文字说“单击以激活并使用此控件”,也就是说页面刚打开的时候,页面上的Flash是没有被激活的,需要用户确认,这时Flash可以正常播放动画但是如果里面有按钮什么的就不能点,用户确认激活后那些按钮才可以用。

其实这是你的系统在最近升级更新过了,并且安装了更新系统编号为KB912945http://support.microsoft.com/kb/912945)的补丁。

这是微软为了避免与Eolas公司和加利福尼亚大学之间的专利侵权纠纷,而发布的一个IE非安全更新,这不是什么BUG 。

安装这个补丁以后,IE浏览器对ActiveX控件和Java程序的处理方式将有所改变,默认情况下不会主动激活,因此用户在访问Flash广告等网络内容时需要多点击一次鼠标,但非交互式控件不会改变,微软已经通知网站开发人员最好对他们的网页作出相应修改!
解决方案一:
通过调用外部js,将activex控件写入到页面中。
例如:a.html要加载一个b.swf的flash,需要另外使用一个c.js文件,在里面通过document.write/innerHTML/outerHTML方式,将带有b.swf的object标签填入到页面指定位置。
c.js中的函数:

解决方案二:(我解决该问题采用了这个方案)
创建一个JS文件,命名为c.js

function insertFlash(elm, url, w, h) {
if (!document.getElementById(elm)) return;
var str = '';
str 
+= '<object width="'+ w +'" height="'+ h +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">';
str 
+= '<param name="movie" value="'+ url +'">';
str 
+= '<param name="wmode" value="opaque">';
str 
+= '<param name="quality" value="autohigh">';
str 
+= '<embed width="'+ w +'" height="'+ h +'" src="'+ url +'" quality="autohigh" wmode="opaque" type="application/x-shockwave-flash" plugspace="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>';
str 
+= '</object>';
document.getElementById(elm).innerHTML 
= str;
}

 

这是一个非常简单的函数,大家在使用的时候可以根据自己的需求,作相应修改。比如给object增加一些参数等等。

参数说明:
elm:需要插入flash的外层HTMLElement
url: flash的地址
w: flash宽
h: flash高

使用方法:在a.html页面中使用以下代码

<script type="text/javascript" src="c.js"></script>
<div id="test"></div>
<script type="text/javascript">
// <![CDATA[
insertFlash('test''b.swf'12085); //test是上面的DIV的ID名,后面跟着的是FLASH的路径以及宽跟高
//
 ]]>
</script> 

 

//v1.0
//
Copyright 2006 Adobe Systems, Inc. All rights reserved.
function AC_AddExtension(src, ext)
{
if (src.indexOf('?'!= -1)
return src.replace(/?/, ext+'?'); 
else
return src + ext;
}


function AC_Generateobj(objAttrs, params, embedAttrs) 

var str = '<object ';
for (var i in objAttrs)
str 
+= i + '="' + objAttrs[i] + '';
str 
+= '>';
for (var i in params)
str 
+= '<param name="' + i + '" value="' + params[i] + '" /> ';
str 
+= '<embed ';
for (var i in embedAttrs)
str 
+= i + '="' + embedAttrs[i] + '';
str 
+= ' ></embed></object>';

document.write(str);
}


function AC_FL_RunContent(){
var ret = 
AC_GetArgs
( arguments, 
".swf""movie""clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
"application/x-shockwave-flash"
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}


function AC_SW_RunContent(){
var ret = 
AC_GetArgs
( arguments, 
".dcr""src""clsid:166B1BCA-3F9C-11CF-8075-444553540000"
null
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}


function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
var ret = new Object();
ret.embedAttrs 
= new Object();
ret.params 
= new Object();
ret.objAttrs 
= new Object();
for (var i=0; i < args.length; i=i+2){
var currArg = args[i].toLowerCase(); 

switch (currArg)
case "classid":
break;
case "pluginspage":
ret.embedAttrs[args[i]] 
= args[i+1];
break;
case "src":
case "movie"
args[i
+1= AC_AddExtension(args[i+1], ext);
ret.embedAttrs[
"src"= args[i+1];
ret.params[srcParamName] 
= args[i+1];
break;
case "onafterupdate":
case "onbeforeupdate":
case "onblur":
case "oncellchange":
case "onclick":
case "ondblClick":
case "ondrag":
case "ondragend":
case "ondragenter":
case "ondragleave":
case "ondragover":
case "ondrop":
case "onfinish":
case "onfocus":
case "onhelp":
case "onmousedown":
case "onmouseup":
case "onmouseover":
case "onmousemove":
case "onmouseout":
case "onkeypress":
case "onkeydown":
case "onkeyup":
case "onload":
case "onlosecapture":
case "onpropertychange":
case "onreadystatechange":
case "onrowsdelete":
case "onrowenter":
case "onrowexit":
case "onrowsinserted":
case "onstart":
case "onscroll":
case "onbeforeeditfocus":
case "onactivate":
case "onbeforedeactivate":
case "ondeactivate":
case "type":
case "codebase":
ret.objAttrs[args[i]] 
= args[i+1];
break;
case "width":
case "height":
case "align":
case "vspace"
case "hspace":
case "class":
case "title":
case "accesskey":
case "name":
case "id":
case "tabindex":
ret.embedAttrs[args[i]] 
= ret.objAttrs[args[i]] = args[i+1];
break;
default:
ret.embedAttrs[args[i]] 
= ret.params[args[i]] = args[i+1];
}

}

ret.objAttrs[
"classid"= classid;
if (mimeType) ret.embedAttrs["type"= mimeType;
return ret;
}

 

调用该JS文件

 

<script src="c.js" type="text/javascript"></script>

 

接着就是在需要放置FLASH的地方加入以下代码,注意其中的中文内容提示

 

<script type="text/javascript">
AC_FL_RunContent( 
'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0','width','','height','','src','snow','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','wmode','transparent','movie',''FLASH的路径和文件名不要加.swf这个扩展名','menu','false' ); //end AC code
</script>
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="宽" height="高">
<param name="movie" value="swf文件路径">
<param name="quality" value="high">
<param name="wmode" value="transparent">
<param value="false" name="menu" /> //屏蔽右键的代码,可去,可留
<embed src="swf文件路径" width="宽" height="高" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent"></embed>
</object>
</noscript>

 

解决方案三:
直接从系统中删除相应的补丁,但针对性太强,只对个人的电脑用户,你的客户不懂这些就没办法了。

插件编号:KB912945,针对flash等控件的,可以在控制面板中卸载此补丁
现在(2006.8.11)后,微软已经将KB912945放在了KB918899里面了,将其删除或御载

//------------------------------------------------------转载结束----------------------------------------------

//我是使用第一种方法,使用的脚本是一个国外的人写的SwfObject.js

 

<script type="text/javascript" src="css/swfobject.js"></script>

 

在调用

 

<div id="flashcontent" style="font-size:small ">
      
<strong>&nbsp;&nbsp;&nbsp;&nbsp;非常抱歉,您的浏览器不支持FLASH播放!</strong>
       
<br>       
</div>
<script type="text/javascript">
// <![CDATA[
       var so = new SWFObject("images/logo.swf""logo""1024""110""6""#4479bd");
        
////参数意思: 地址,Flash 的 id(不是容器的 id),宽,高,版本需求,背景颜色
    so.write("flashcontent");
// ]]>
</script>

 

 

利用Javascript的“函数重载”实现自定义Alert样式:【上一篇】
在tomcat5.0中部署gwt程序:【下一篇】
【相关文章】
  • 使用Flash滤镜,只需几步就可以创建立体书脊(3)
  • 用C语言做FLASH进度条
  • 使用Flash滤镜,只需几步就可以创建立体书脊(2)
  • oracle10g新特性:闪回恢复区(Flash recovery area)
  • Flash 8(ActionScript 2)+Asp.net(C#)实现带进度条文件上传
  • FLASH大头贴 FLASH部分源程序解析
  • 关于flash网站全站制作的注意事项,及技术和剖析
  • 我想我所保存的声音可以导出在FLASH 里面使用
  • 要注册 xenap14是把EXE解为SWF的 ? zeus_a01是分解层的 ? DeFlash1.3可以解密和分解
  • PM在flash5中导八一张位图图片,?择modify 猅race bitmap
  • 【随机文章】
  • AS/400 初级系统管理培训
  • 在ASP+中使用Cookie
  • Freehand实例—绘制足球
  • LFS (版本6.1.1) 安装心得(转载)
  • 9.Networking
  • 怎样使MySQL安全以对抗解密高手
  • 我的BCB情缘
  • A1000&rm6221 upgrade
  • Samba 使用指南
  • ASP进阶之文章在线管理更新(3)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.