Mecromedia (Now Adobe) 的Flash Version Detect 脚本.
1
// Flash Player Version Detection - Rev 1.5
2
// Detect Client Browser type
3
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
4
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
5
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
6
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
7
8
function ControlVersion()
9
{
10
var version;
11
var axo;
12
var e;
13
14
// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
15
16
try {
17
// version will be set for 7.X or greater players
18
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
19
version = axo.GetVariable("$version");
20
} catch (e) {
21
}
22
23
if (!version)
24
{
25
try {
26
// version will be set for 6.X players only
27
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
28
29
// installed player is some revision of 6.0
30
// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
31
// so we have to be careful.
32
33
// default to the first public version
34
version = "WIN 6,0,21,0";
35
36
// throws if AllowScripAccess does not exist (introduced in 6.0r47)
37
axo.AllowScriptAccess = "always";
38
39
// safe to call for 6.0r47 or greater
40
version = axo.GetVariable("$version");
41
42
} catch (e) {
43
}
44
}
45
46
if (!version)
47
{
48
try {
49
// version will be set for 4.X or 5.X player
50
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
51
version = axo.GetVariable("$version");
52
} catch (e) {
53
}
54
}
55
56
if (!version)
57
{
58
try {
59
// version will be set for 3.X player
60
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
61
version = "WIN 3,0,18,0";
62
} catch (e) {
63
}
64
}
65
66
if (!version)
67
{
68
try {
69
// version will be set for 2.X player
70
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
71
version = "WIN 2,0,0,11";
72
} catch (e) {
73
version = -1;
74
}
75
}
76
77
return version;
78
}
79
80
// JavaScript helper required to detect Flash Player PlugIn version information
81
function GetSwfVer(){
82
// NS/Opera version >= 3 check for Flash plugin in plugin array
83
var flashVer = -1;
84
85
if (navigator.plugins != null && navigator.plugins.length > 0) {
86
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
87
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
88
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
89
var descArray = flashDescription.split(" ");
90
var tempArrayMajor = descArray[2].split(".");
91
var versionMajor = tempArrayMajor[0];
92
var versionMinor = tempArrayMajor[1];
93
if ( descArray[3] != "" ) {
94
tempArrayMinor = descArray[3].split("r");
95
} else {
96
tempArrayMinor = descArray[4].split("r");
97
}
98
var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
99
var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
100
}
101
}
102
// MSN/WebTV 2.6 supports Flash 4
103
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
104
// WebTV 2.5 supports Flash 3
105
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
106
// older WebTV supports Flash 2
107
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
108
else if ( isIE && isWin && !isOpera ) {
109
flashVer = ControlVersion();
110
}
111
return flashVer;
112
}
113
114
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
115
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
116
{
117
versionStr = GetSwfVer();
118
if (versionStr == -1 ) {
119
return false;
120
} else if (versionStr != 0) {
121
if(isIE && isWin && !isOpera) {
122
// Given "WIN 2,0,0,11"
123
tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
124
tempString = tempArray[1]; // "2,0,0,11"
125
versionArray = tempString.split(","); // ['2', '0', '0', '11']
126
} else {
127
versionArray = versionStr.split(".");
128
}
129
var versionMajor = versionArray[0];
130
var versionMinor = versionArray[1];
131
var versionRevision = versionArray[2];
132
133
// is the major.revision >= requested major.revision AND the minor version >= requested minor
134
if (versionMajor > parseFloat(reqMajorVer)) {
135
return true;
136
} else if (versionMajor == parseFloat(reqMajorVer)) {
137
if (versionMinor > parseFloat(reqMinorVer))
138
return true;
139
else if (versionMinor == parseFloat(reqMinorVer)) {
140
if (versionRevision >= parseFloat(reqRevision))
141
return true;
142
}
143
}
144
return false;
145
}
146
}
147
148
function AC_AddExtension(src, ext)
149
{
150
if (src.indexOf('?') != -1)
151
return src.replace(/\?/, ext+'?');
152
else
153
return src + ext;
154
}
155
156
function AC_Generateobj(objAttrs, params, embedAttrs)
157
{
158
var str = '';
159
if (isIE && isWin && !isOpera)
160
{
161
str += '<object ';
162
for (var i in objAttrs)
163
str += i + '="' + objAttrs[i] + '" ';
164
for (var i in params)
165
str += '><param name="' + i + '" value="' + params[i] + '" /> ';
166
str += '></object>';
167
} else {
168
str += '<embed ';
169
for (var i in embedAttrs)
170
str += i + '="' + embedAttrs[i] + '" ';
171
str += '> </embed>';
172
}
173
174
document.write(str);
175
}
176
177
function AC_FL_RunContent(){
178
var ret =
179
AC_GetArgs
180
( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
181
, "application/x-shockwave-flash"
182
);
183
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
184
}
185
186
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
187
var ret = new Object();
188
ret.embedAttrs = new Object();
189
ret.params = new Object();
190
ret.objAttrs = new Object();
191
for (var i=0; i < args.length; i=i+2){
192
var currArg = args[i].toLowerCase();
193
194
switch (currArg){
195
case "classid":
196
break;
197
case "pluginspage":
198
ret.embedAttrs[args[i]] = args[i+1];
199
break;
200
case "src":
201
case "movie":
202
args[i+1] = AC_AddExtension(args[i+1], ext);
203
ret.embedAttrs["src"] = args[i+1];
204
ret.params[srcParamName] = args[i+1];
205
break;
206
case "onafterupdate":
207
case "onbeforeupdate":
208
case "onblur":
209
case "oncellchange":
210
case "onclick":
211
case "ondblClick":
212
case "ondrag":
213
case "ondragend":
214
case "ondragenter":
215
case "ondragleave":
216
case "ondragover":
217
case "ondrop":
218
case "onfinish":
219
case "onfocus":
220
case "onhelp":
221
case "onmousedown":
222
case "onmouseup":
223
case "onmouseover":
224
case "onmousemove":
225
case "onmouseout":
226
case "onkeypress":
227
case "onkeydown":
228
case "onkeyup":
229
case "onload":
230
case "onlosecapture":
231
case "onpropertychange":
232
case "onreadystatechange":
233
case "onrowsdelete":
234
case "onrowenter":
235
case "onrowexit":
236
case "onrowsinserted":
237
case "onstart":
238
case "onscroll":
239
case "onbeforeeditfocus":
240
case "onactivate":
241
case "onbeforedeactivate":
242
case "ondeactivate":
243
case "type":
244
case "codebase":
245
case "id":
246
ret.objAttrs[args[i]] = args[i+1];
247
break;
248
case "width":
249
case "height":
250
case "align":
251
case "vspace":
252
case "hspace":
253
case "class":
254
case "title":
255
case "accesskey":
256
case "name":
257
case "tabindex":
258
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
259
break;
260
default:
261
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
262
}
263
}
264
ret.objAttrs["classid"] = classid;
265
if (mimeType) ret.embedAttrs["type"] = mimeType;
266
return ret;
267
}
// Flash Player Version Detection - Rev 1.52
// Detect Client Browser type3
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.4
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;5
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;6
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;7

8
function ControlVersion()9
{10
var version;11
var axo;12
var e;13

14
// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry15

16
try {17
// version will be set for 7.X or greater players18
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");19
version = axo.GetVariable("$version");20
} catch (e) {21
}22

23
if (!version)24
{25
try {26
// version will be set for 6.X players only27
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");28
29
// installed player is some revision of 6.030
// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,31
// so we have to be careful. 32
33
// default to the first public version34
version = "WIN 6,0,21,0";35

36
// throws if AllowScripAccess does not exist (introduced in 6.0r47) 37
axo.AllowScriptAccess = "always";38

39
// safe to call for 6.0r47 or greater40
version = axo.GetVariable("$version");41

42
} catch (e) {43
}44
}45

46
if (!version)47
{48
try {49
// version will be set for 4.X or 5.X player50
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");51
version = axo.GetVariable("$version");52
} catch (e) {53
}54
}55

56
if (!version)57
{58
try {59
// version will be set for 3.X player60
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");61
version = "WIN 3,0,18,0";62
} catch (e) {63
}64
}65

66
if (!version)67
{68
try {69
// version will be set for 2.X player70
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");71
version = "WIN 2,0,0,11";72
} catch (e) {73
version = -1;74
}75
}76
77
return version;78
}79

80
// JavaScript helper required to detect Flash Player PlugIn version information81
function GetSwfVer(){82
// NS/Opera version >= 3 check for Flash plugin in plugin array83
var flashVer = -1;84
85
if (navigator.plugins != null && navigator.plugins.length > 0) {86
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {87
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";88
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; 89
var descArray = flashDescription.split(" ");90
var tempArrayMajor = descArray[2].split(".");91
var versionMajor = tempArrayMajor[0];92
var versionMinor = tempArrayMajor[1];93
if ( descArray[3] != "" ) {94
tempArrayMinor = descArray[3].split("r");95
} else {96
tempArrayMinor = descArray[4].split("r");97
}98
var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;99
var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;100
}101
}102
// MSN/WebTV 2.6 supports Flash 4103
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;104
// WebTV 2.5 supports Flash 3105
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;106
// older WebTV supports Flash 2107
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;108
else if ( isIE && isWin && !isOpera ) {109
flashVer = ControlVersion();110
} 111
return flashVer;112
}113

114
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available115
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)116
{117
versionStr = GetSwfVer();118
if (versionStr == -1 ) {119
return false;120
} else if (versionStr != 0) {121
if(isIE && isWin && !isOpera) {122
// Given "WIN 2,0,0,11"123
tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]124
tempString = tempArray[1]; // "2,0,0,11"125
versionArray = tempString.split(","); // ['2', '0', '0', '11']126
} else {127
versionArray = versionStr.split(".");128
}129
var versionMajor = versionArray[0];130
var versionMinor = versionArray[1];131
var versionRevision = versionArray[2];132

133
// is the major.revision >= requested major.revision AND the minor version >= requested minor134
if (versionMajor > parseFloat(reqMajorVer)) {135
return true;136
} else if (versionMajor == parseFloat(reqMajorVer)) {137
if (versionMinor > parseFloat(reqMinorVer))138
return true;139
else if (versionMinor == parseFloat(reqMinorVer)) {140
if (versionRevision >= parseFloat(reqRevision))141
return true;142
}143
}144
return false;145
}146
}147

148
function AC_AddExtension(src, ext)149
{150
if (src.indexOf('?') != -1)151
return src.replace(/\?/, ext+'?'); 152
else153
return src + ext;154
}155

156
function AC_Generateobj(objAttrs, params, embedAttrs) 157
{ 158
var str = '';159
if (isIE && isWin && !isOpera)160
{161
str += '<object ';162
for (var i in objAttrs)163
str += i + '="' + objAttrs[i] + '" ';164
for (var i in params)165
str += '><param name="' + i + '" value="' + params[i] + '" /> ';166
str += '></object>';167
} else {168
str += '<embed ';169
for (var i in embedAttrs)170
str += i + '="' + embedAttrs[i] + '" ';171
str += '> </embed>';172
}173

174
document.write(str);175
}176

177
function AC_FL_RunContent(){178
var ret = 179
AC_GetArgs180
( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"181
, "application/x-shockwave-flash"182
);183
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);184
}185

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

194
switch (currArg){ 195
case "classid":196
break;197
case "pluginspage":198
ret.embedAttrs[args[i]] = args[i+1];199
break;200
case "src":201
case "movie": 202
args[i+1] = AC_AddExtension(args[i+1], ext);203
ret.embedAttrs["src"] = args[i+1];204
ret.params[srcParamName] = args[i+1];205
break;206
case "onafterupdate":207
case "onbeforeupdate":208
case "onblur":209
case "oncellchange":210
case "onclick":211
case "ondblClick":212
case "ondrag":213
case "ondragend":214
case "ondragenter":215
case "ondragleave":216
case "ondragover":217
case "ondrop":218
case "onfinish":219
case "onfocus":220
case "onhelp":221
case "onmousedown":222
case "onmouseup":223
case "onmouseover":224
case "onmousemove":225
case "onmouseout":226
case "onkeypress":227
case "onkeydown":228
case "onkeyup":229
case "onload":230
case "onlosecapture":231
case "onpropertychange":232
case "onreadystatechange":233
case "onrowsdelete":234
case "onrowenter":235
case "onrowexit":236
case "onrowsinserted":237
case "onstart":238
case "onscroll":239
case "onbeforeeditfocus":240
case "onactivate":241
case "onbeforedeactivate":242
case "ondeactivate":243
case "type":244
case "codebase":245
case "id":246
ret.objAttrs[args[i]] = args[i+1];247
break;248
case "width":249
case "height":250
case "align":251
case "vspace": 252
case "hspace":253
case "class":254
case "title":255
case "accesskey":256
case "name":257
case "tabindex":258
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];259
break;260
default:261
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];262
}263
}264
ret.objAttrs["classid"] = classid;265
if (mimeType) ret.embedAttrs["type"] = mimeType;266
return ret;267
}


浙公网安备 33010602011771号