技术:SWFUpload2.5插件加载问题

SWFUpload 2.5为FlashPlayer 9.0及以上版本提供swfupload_fp9.swf(14KB),而以下版本提供swfupload.swf(183KB)。我们可以很明显看出高版本的体积更小,特别对于多实例的应用,网络优化更为明显。但实际测试表明,官方的脚本并不能正确根据版本进行切换。

SWFUpload通过加载影片并执行相关代码完成上传按钮绘制。仔细研究下脚本终于找到了问题。

JavaScript Code
1
2
技术:SWFUpload2.5插件加载问题
3
4
5
6
7
8
9
10
11
12
13
//Private:getFlashHTMLgeneratestheobjecttagneededtoembedtheflashintothedocument
SWFUpload.prototype.getFlashHTML=function(flashVersion)
{
//FlashSatayobjectsyntax:http://www.alistapart.com/articles/flashsatay
return[',this.movieName,'"type="application/x-shockwave-flash"data="',(this.support.imageResize?this.settings.flash_url:this.settings.flash9_url),'"width="',this.settings.button_width,'"height="',this.settings.button_height,'">',
',this.settings.button_window_mode,'"/>',
',(this.support.imageResize?this.settings.flash_url:this.settings.flash9_url),'"/>',
'',
'',
'+this.getFlashVars()+'"/>',
''].join("");
};

可以看出通过以下表达式进行Flash影片URL地址的切换:this.support.imageResize?this.settings.flash_url:this.settings.flash9_url

其中this.support.imageResize的初始化包含中方法loadSupport中:

JavaScript Code
1
2
3
4
5
6
7
8
9
//InitializesthesupportedfunctionalitybasedtheFlashPlayerversion,state,andeventthatoccurduringinitialization
SWFUpload.prototype.loadSupport=function(){
this.support={
loading:swfobject.hasFlashPlayerVersion("9.0.28"),
imageResize:swfobject.hasFlashPlayerVersion("10.0.0")
};
};

备注:

hasFlashPlayerVersion(versionStr)

versionStr(string):所需Flash 播放器的最低版本。通常为三个数字的组合,如:"9.0.18",判断Flash 播放器是否达到要求版本号。返回 true或 false。

getFlashPlayerVersion()

获取 Flash 播放器的版本号,返回类型为 object,内容为:{major:n,minor:n,release:n}其中可以省略次要版本号,如:"9.0.0"可以直接写为 "9"。

实际上,当满足高版本应该切换到swfupload_fp9.swf。而这里表达式写的有问题。

为了让代码更清晰,在loadSupport方法this.support增加一个version表示主版本号。

JavaScript Code
1
2
3
4
5
6
7
SWFUpload.prototype.loadSupport=function(){
this.support={
loading:swfobject.hasFlashPlayerVersion("9.0.28"),
imageResize:swfobject.hasFlashPlayerVersion("10.0.0"),
version:swfobject.getFlashPlayerVersion().major
};
};

在getFlashHTML重写下表达式将this.support.imageResize替换为this.support.version<</SPAN>9

JavaScript Code
1
2
3
4
5
6
7
8
9
10
11
12
//Private:getFlashHTMLgeneratestheobjecttagneededtoembedtheflashintothedocument
SWFUpload.prototype.getFlashHTML=function(flashVersion){
//FlashSatayobjectsyntax:http://www.alistapart.com/articles/flashsatay
return[',this.movieName,'"type="application/x-shockwave-flash"data="',(this.support.version<</SPAN>9?this.settings.flash_url:this.settings.flash9_url),'"width="',this.settings.button_width,'"height="',this.settings.button_height,'">',
',this.settings.button_window_mode,'"/>',
',(this.support.version<</SPAN>9?this.settings.flash_url:this.settings.flash9_url),'"/>',
'',
'',
'+this.getFlashVars()+'"/>',
'安装Flash',
''].join("");
};

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/119957.html

更多阅读

360:2 如何彻底卸载清理360安全卫士

360:[2]如何彻底卸载清理360安全卫士——简介前言:360安全卫士自带卸载程序,但卸载真的彻底吗?也有人遇到360安全卫士相关功能不正常,如问360安全中心打不开怎么办?如此,我们就要先彻底卸载清理360安全卫士,然后再重新安装最新版本,便可解

怎么取消禁用加载项 ie禁用加载项怎么查看

怎么取消禁用加载项——简介如何管理加载项,启用或禁用加载项?加载项是浏览器的一项设置,下面以IE浏览器举例讲述。怎么取消禁用加载项——方法/步骤怎么取消禁用加载项 1、打开浏览器,在命令栏点击工具下拉列表:怎么取消禁用加载项 2

3dmax中怎样加载材质贴图 3dmax缺少贴图坐标

3dmax中怎样加载材质贴图——简介 3dsmax中如何加载贴图,这个是个初级问题,非常简单,3dsMAX中可以加载如jpg、bmp、png、psd等等格式的贴图!我们常用的也是位图贴图方式!如何加载贴图文件呢请看下图我一步一步给大家讲解。3dmax中怎样加

cs1.5怎么加电脑人_cs加人方法 cs1.5加人补丁

cs1.5这个游戏现在也还有很多人在玩吧,因为这个游戏是经典的游戏,但是有的人在玩这个游戏的时候还不知道怎么加电脑人,那么今天就教大家如何加电脑人。cs1.5怎么加电脑人_cs加人方法——工具/原料电脑 cs1.5客户端cs1.5怎么加电脑人_

浏览器显示无法加载插件怎么办 flash player安卓版

浏览器显示无法加载插件怎么办——简介有时我们在浏览器中观看视频时,会发现原本的视频窗口此时却变成了“无法加载插件”的灰色窗口。对此我们可以通过以下方法来解决。浏览器显示无法加载插件怎么办——方法/步骤浏览器显示无法加

声明:《技术:SWFUpload2.5插件加载问题》为网友娶你江山为聘分享!如侵犯到您的合法权益请联系我们删除