有没有人有一个脚本示例,它可以在 IE/Firefox 上可靠地工作,以检测浏览器是否能够显示嵌入式 Flash 内容。我说可靠是因为我知道这不可能 100% 的时间。
Javascript 中的跨浏览器 Flash 检测
IT技术
javascript
flash
cross-browser
2021-02-02 16:34:45
6个回答
我同意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");
}
用您需要的任何最低 Flash 版本替换“9.0.115”。我选择 9.0.115 作为示例,因为这是添加了 h.264 支持的版本。
如果访问者没有flash,它会报告“0.0.0”的flash版本,所以如果你只是想知道他们是否有flash,请使用:
if(swfobject.hasFlashPlayerVersion("1"))
{
alert("You have flash!");
}
else
{
alert("You do not flash :-(");
}
SWFObject非常可靠。我已经使用它很长一段时间没有问题了。
我知道这是一个旧帖子,但我一直在寻找一段时间并没有找到任何东西。
我已经实现了JavaScript Flash 检测库。它工作得很好,并且记录在案以供快速使用。从字面上看,我花了 2 分钟。这是我在标题中写的代码:
<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>
你可以使用闭包编译器来生成一个小的、跨浏览器的 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");
我用过的最低版本(不检查版本,只检查 Flash 插件):
var hasFlash = function() {
return (typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) ? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) : navigator.plugins["Shockwave Flash"];
};
其它你可能感兴趣的问题