有没有可靠的跨IE/Firefox浏览器工作的脚本示例,可以检测浏览器是否能够显示嵌入式Flash内容。我说可靠是因为我知道这不是始终可能实现的100%。
有没有可靠的跨IE/Firefox浏览器工作的脚本示例,可以检测浏览器是否能够显示嵌入式Flash内容。我说可靠是因为我知道这不是始终可能实现的100%。
我同意Max Stewart的观点。 SWFObject是最佳选择。我想通过一个示例代码来补充他的答案。以下代码可以帮助您入门:
确保您已经包含了swfobject.js
文件(从这里获取):
<script type="text/javascript" src="swfobject.js"></script>
然后像这样使用它:
if(swfobject.hasFlashPlayerVersion("9.0.115"))
{
alert("You have the minimum required flash version (or newer)");
}
else
{
alert("You do not have the minimum required flash version");
}
将“9.0.115”替换为您需要的最低Flash版本。我选择9.0.115作为示例,因为该版本添加了h.264支持。
如果访问者没有安装Flash,则会报告Flash版本为“0.0.0”,因此,如果您只想知道他们是否安装了Flash,请使用:
if(swfobject.hasFlashPlayerVersion("1"))
{
alert("You have flash!");
}
else
{
alert("You do not flash :-(");
}
if(SWFobject && SWFobject.hasFlashPlayerVersion("1")) { // 在此处添加代码 }
- E-commSWFObject非常可靠。 我已经使用它相当长的时间,而且没遇到过问题。
$('html').addClass(typeof swfobject !== 'undefined' && swfobject.getFlashPlayerVersion().major !== 0 ? 'flash' : 'no-flash');
- Jon zif( swfobject.hasFlashPlayerVersion("8.0") ) { }
检查 Flash 是否存在。如果没有安装 Flash,则会返回 false。数字表示所需的最低 Flash 版本。 - Avatar<script src="Scripts/flash_detect.js"></script>
<script type="text/javascript">
if (!FlashDetect.installed) {
alert("Flash is required to enjoy this site.");
} else {
alert("Flash is installed on your Web browser.");
}
</script>
你可以使用Closure Compiler生成一个小型、跨浏览器的Flash检测:
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print
// @use_closure_library true
// ==/ClosureCompiler==
// ADD YOUR CODE HERE
goog.require('goog.userAgent.flash');
if (goog.userAgent.flash.HAS_FLASH) {
alert('flash version: '+goog.userAgent.flash.VERSION);
}else{
alert('no flash found');
}
这将生成以下“编译”代码:
var a = !1,
b = "";
function c(d) {
d = d.match(/[\d]+/g);
d.length = 3;
return d.join(".")
}
if (navigator.plugins && navigator.plugins.length) {
var e = navigator.plugins["Shockwave Flash"];
e && (a = !0, e.description && (b = c(e.description)));
navigator.plugins["Shockwave Flash 2.0"] && (a = !0, b = "2.0.0.11")
} else {
if (navigator.mimeTypes && navigator.mimeTypes.length) {
var f = navigator.mimeTypes["application/x-shockwave-flash"];
(a = f && f.enabledPlugin) && (b = c(f.enabledPlugin.description))
} else {
try {
var g = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"),
a = !0,
b = c(g.GetVariable("$version"))
} catch (h) {
try {
g = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"), a = !0, b = "6.0.21"
} catch (i) {
try {
g = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), a = !0, b = c(g.GetVariable("$version"))
} catch (j) {}
}
}
}
}
var k = b;
a ? alert("flash version: " + k) : alert("no flash found");
goog.userAgent.flash
)?我只想确认我没有错过细微的差别。 - Andrew Ensley我使用过的最低版本(不检查版本,只是 Flash 插件):
var hasFlash = function() {
return (typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) ? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) : navigator.plugins["Shockwave Flash"];
};
http://www.featureblend.com/javascript-flash-detection-library.html
也许正是你需要的。一行代码中的isFlashExists
变量:
<script type='text/javascript'
src='//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js'> </script>
<script type='text/javascript'>
var isFlashExists = swfobject.hasFlashPlayerVersion('1') ? true : false ;
if (isFlashExists) {
alert ('flash exists');
} else {
alert ('NO flash');
}
</script>
swfobject.getFlashPlayerVersion();
。该方法与上述方法功能相同。请查看http://whatsmy.browsersize.com(第14-120行)以查看源代码。
以下是适用于各种浏览器(FF/IE/Safari/Opera/Chrome)的仅限Flash检测的抽象化跨浏览器jsbin代码。
detectObject()
对应函数。 - Ates Goral