Alternate HTML content should be placed here. This content requires the Adobe Flash Player. Get Flash [转]
Tag: Flex | Author: 老蒋 |
最近在用FLEX写东西,运行HTML时候总提示:Alternate HTML content should be placed here. This content requires the Adobe Flash Player,开始以为FLASH版本问题,重新装了几次还是老样子,打开JS文件调试了会,终于知道问题出在哪了。
在生成的JS文件中有段这样的语句:
- function ControlVersion()
- ...{
- var version;
- var axo;
- var e;
- // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
- try ...{
- // version will be set for 7.X or greater players
- axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
- version = axo.GetVariable("$version");
- } catch (e) ...{
- }
- if (!version)
- ...{
- try ...{
- // version will be set for 6.X players only
- axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
- // installed player is some revision of 6.0
- // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
- // so we have to be careful.
- // default to the first public version
- version = "WIN 6,0,21,0";
- // throws if AllowScripAccess does not exist (introduced in 6.0r47)
- axo.AllowScriptAccess = "always";
- // safe to call for 6.0r47 or greater
- version = axo.GetVariable("$version");
- } catch (e) ...{
- }
- }
- if (!version)
- ...{
- try ...{
- // version will be set for 4.X or 5.X player
- axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
- version = axo.GetVariable("$version");
- } catch (e) ...{
- }
- }
- if (!version)
- ...{
- try ...{
- // version will be set for 3.X player
- axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
- version = "WIN 3,0,18,0";
- } catch (e) ...{
- }
- }
- if (!version)
- ...{
- try ...{
- // version will be set for 2.X player
- axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
- version = "WIN 2,0,0,11";
- } catch (e) ...{
- version = -1;
- }
- }
- return version;
- }
在IE7中运行这段代码的时候,函数最后会运行到,最后一个if(!verson),此时返回的是WIN 2,0,0,11,之后代码
又截取到版本为2并与你要求的FLASH版本号对比(如9),此时就提示你版本太低,产生这个原因,大约是因为FLASH并没有严格按照COM组件的标准,在获取版本号时产生错误,Firfox下 不会有这样的错误。
解决方法是,使用Firfox调试你的程序,或者修改
- if (!version)
- {
- try {
- // version will be set for 2.X player
- axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
- version = "WIN 2,0,0,11";
- } catch (e) {
- version = -1;
- }
- }
- 为
- if (!version)
- {
- try {
- // version will be set for 2.X player
- axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
- version=axo.GetVariable("$version");
- } catch (e) {
- version = "WIN 2,0,0,11";
- }
- }
这样就可以了,至于其他电脑上的兼容问题,有待进一步的调试。
Leave a comment
您必须 登录 后才能发表留言。