有没有可靠的跨IE/Firefox浏览器工作的脚本示例,可以检测浏览器是否能够显示嵌入式Flash内容。我说可靠是因为我知道这不是始终可能实现的100%。
有没有可靠的跨IE/Firefox浏览器工作的脚本示例,可以检测浏览器是否能够显示嵌入式Flash内容。我说可靠是因为我知道这不是始终可能实现的100%。
你觉得呢:
var hasFlash = function() {
var flash = false;
try{
if(new ActiveXObject('ShockwaveFlash.ShockwaveFlash')){
flash=true;
}
}catch(e){
if(navigator.mimeTypes ['application/x-shockwave-flash'] !== undefined){
flash=true;
}
}
return flash;
};
如果您对纯JavaScript解决方案感兴趣,这是我从Brett复制的一个:
function detectflash(){
if (navigator.plugins != null && navigator.plugins.length > 0){
return navigator.plugins["Shockwave Flash"] && true;
}
if(~navigator.userAgent.toLowerCase().indexOf("webtv")){
return true;
}
if(~navigator.appVersion.indexOf("MSIE") && !~navigator.userAgent.indexOf("Opera")){
try{
return new ActiveXObject("ShockwaveFlash.ShockwaveFlash") && true;
} catch(e){}
}
return false;
}
function testFlash() {
var support = false;
//IE only
if("ActiveXObject" in window) {
try{
support = !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"));
}catch(e){
support = false;
}
//W3C, better support in legacy browser
} else {
support = !!navigator.mimeTypes['application/x-shockwave-flash'];
}
return support;
}
function hasFlash(){
var b = !1;
function c(a) {if (a = a.match(/[\d]+/g)) {a.length = 3;}}
(function() {
if (navigator.plugins && navigator.plugins.length) {
var a = navigator.plugins["Shockwave Flash"];
if (a && (b = !0, a.description)) {c(a.description);return;}
if (navigator.plugins["Shockwave Flash 2.0"]) {b = !0;return;}
}
if (navigator.mimeTypes && navigator.mimeTypes.length && (a = navigator.mimeTypes["application/x-shockwave-flash"], b = !(!a || !a.enabledPlugin))) {c(a.enabledPlugin.description);return;}
if ("undefined" != typeof ActiveXObject) {
try {
var d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");b = !0;c(d.GetVariable("$version"));return;
} catch (e) {}
try {
d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");b = !0;
return;
} catch (e) {}
try {
d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), b = !0, c(d.GetVariable("$version"));
} catch (e) {}
}
})();
return b;
}
boolean isFlashVersion(version)
返回 Flash 版本是否大于提供的版本
function isFlashVersion(version) {
var e = String.prototype.trim ? function(a) {return a.trim()} : function(a) {return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};
function f(a, b) {return a < b ? -1 : a > b ? 1 : 0};
var h = !1,l = "";
function m(a) {a = a.match(/[\d]+/g);if (!a) {return ""}a.length = 3;return a.join(".")}
(function() {
if (navigator.plugins && navigator.plugins.length) {
var a = navigator.plugins["Shockwave Flash"];
if (a && (h = !0, a.description)) {l = m(a.description);return}
if (navigator.plugins["Shockwave Flash 2.0"]) {h = !0;l = "2.0.0.11";return}
}
if (navigator.mimeTypes && navigator.mimeTypes.length && (a = navigator.mimeTypes["application/x-shockwave-flash"], h = !(!a || !a.enabledPlugin))) {l = m(a.enabledPlugin.description);return}
if ("undefined" != typeof ActiveXObject) {
try {
var b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");h = !0;l = m(b.GetVariable("$version"));return
} catch (g) {}
try {
b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");h = !0;l = "6.0.21";return
} catch (g) {}
try {
b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), h = !0, l = m(b.GetVariable("$version"))
} catch (g) {}
}
})();
var n = l;
return (function(a) {
var b = 0,g = e(String(n)).split(".");
a = e(String(a)).split(".");
for (var p = Math.max(g.length, a.length), k = 0; 0 == b && k < p; k++) {
var c = g[k] || "",d = a[k] || "";
do {
c = /(\d*)(\D*)(.*)/.exec(c) || ["", "", "", ""];d = /(\d*)(\D*)(.*)/.exec(d) || ["", "", "", ""];
if (0 == c[0].length && 0 == d[0].length) {break}
b = f(0 == c[1].length ? 0 : parseInt(c[1], 10), 0 == d[1].length ? 0 : parseInt(d[1], 10)) || f(0 == c[2].length, 0 == d[2].length) || f(c[2], d[2]);c = c[3];d = d[3]
} while (0 == b);
}
return 0 <= b
})(version)
}
已创建了一个小的.swf
文件进行重定向。如果浏览器启用了Flash,则会进行重定向。
package com.play48.modules.standalone.util;
import flash.net.URLRequest;
class Redirect {
static function main() {
flash.Lib.getURL(new URLRequest("http://play48.com/flash.html"), "_self");
}
}