Có ai có ví dụ về tập lệnh có thể hoạt động tốt trên IE / Firefox để phát hiện xem trình duyệt có khả năng hiển thị nội dung flash nhúng không. Tôi nói một cách đáng tin cậy bởi vì tôi biết 100% thời gian là không thể.
Có ai có ví dụ về tập lệnh có thể hoạt động tốt trên IE / Firefox để phát hiện xem trình duyệt có khả năng hiển thị nội dung flash nhúng không. Tôi nói một cách đáng tin cậy bởi vì tôi biết 100% thời gian là không thể.
Câu trả lời:
SWFObject rất đáng tin cậy. Tôi đã sử dụng nó mà không gặp rắc rối trong một thời gian khá dài.
$('html').addClass(typeof swfobject !== 'undefined' && swfobject.getFlashPlayerVersion().major !== 0 ? 'flash' : 'no-flash');
if( swfobject.hasFlashPlayerVersion("8.0") ) { }
Throws false nếu không có flash được cài đặt. Số này là phiên bản trình phát flash tối thiểu được yêu cầu.
Tôi đồng ý với Max Stewart . SWFObject là con đường để đi. Tôi muốn bổ sung câu trả lời của anh ấy bằng một ví dụ mã. Điều này phải giúp bạn bắt đầu:
Đảm bảo rằng bạn đã bao gồm swfobject.js
tệp (lấy tại đây ):
<script type="text/javascript" src="swfobject.js"></script>
Sau đó, sử dụng nó như vậy:
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");
}
Thay thế "9.0.115" bằng bất kỳ phiên bản flash tối thiểu nào bạn cần. Tôi đã chọn 9.0.115 làm ví dụ vì đó là phiên bản đã thêm hỗ trợ h.264.
Nếu khách truy cập không có flash, nó sẽ báo phiên bản flash là "0.0.0", vì vậy nếu bạn chỉ muốn biết họ có flash hay không, hãy sử dụng:
if(swfobject.hasFlashPlayerVersion("1"))
{
alert("You have flash!");
}
else
{
alert("You do not flash :-(");
}
if(SWFobject && SWFobject.hasFlashPlayerVersion("1")) { // code here }
Tôi biết đây là một bài viết cũ, nhưng tôi đã tìm một lúc mà không thấy gì cả.
Tôi đã triển khai Thư viện phát hiện Flash JavaScript . Nó hoạt động rất tốt và nó được ghi lại để sử dụng nhanh chóng. Tôi thực sự mất 2 phút. Đây là mã tôi đã viết trong tiêu đề:
<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>
Bạn có thể sử dụng trình biên dịch bao đóng để tạo ra một phát hiện flash trên nhiều trình duyệt nhỏ:
// ==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');
}
dẫn đến mã "đã biên dịch" sau:
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
từ Trình biên dịch đóng cửa của Google)? Tôi chỉ muốn đảm bảo rằng tôi không bỏ lỡ một số khác biệt sắc thái ở đây.
Phiên bản tối thiểu tôi đã từng sử dụng (không kiểm tra phiên bản, chỉ Flash Plugin):
var hasFlash = function() {
return (typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) ? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) : navigator.plugins["Shockwave Flash"];
};
Thư viện phát hiện Flash JavaScript của Carl Yestrau, tại đây:
http://www.featureblend.com/javascript-flash-detection-library.html
... có thể là thứ bạn đang tìm kiếm.
Có lẽ bộ phát hiện trình phát flash của adobe có thể hữu ích ở đây?
http://www.adobe.com/products/flashplayer/download/detection_kit/
Phát hiện và nhúng Flash vào tài liệu web là một nhiệm vụ khó khăn một cách đáng ngạc nhiên.
Tôi rất thất vọng với chất lượng và đánh dấu không tuân thủ tiêu chuẩn được tạo ra từ cả SWFObject và các giải pháp của Adobe. Ngoài ra, thử nghiệm của tôi cho thấy trình cập nhật tự động của Adobe không nhất quán và không đáng tin cậy.
Thư viện phát hiện Flash JavaScript (Flash Detect) và Thư viện trình tạo HTML Flash JavaScript (Flash TML) là một giải pháp đánh dấu dễ đọc, dễ bảo trì và tuân thủ các tiêu chuẩn.
- "Luke đã đọc nguồn!"
Mã cho một isFlashExists
biến lót :
<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>
Lưu ý rằng có một giải pháp thay thế như sau: swfobject.getFlashPlayerVersion();
Xem nguồn tại http://whatsmy.bariesize.com (dòng 14-120).
Đây là mã trình duyệt chéo được tóm tắt trên jsbin chỉ để phát hiện flash , hoạt động trên: FF / IE / Safari / Opera / Chrome.
detectObject()
sao cho IE.
Thế còn:
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;
};
Nếu bạn quan tâm đến giải pháp Javascript thuần túy, đây là giải pháp mà tôi sao chép từ 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;
}
Nếu bạn chỉ muốn kiểm tra xem flash có được bật hay không, thì điều này là đủ.
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;
}
Lưu ý: tránh kiểm tra Đã kích hoạtPlugin , một số trình duyệt di động có plugin flash chạm để bật và sẽ kích hoạt âm thanh giả.
Để tạo một đối tượng Flash tương thích độc lập (tuy nhiên với JavaScript), tôi khuyên bạn nên xem
Vật thể flash không phô trương (UFO)
Sử dụng thư viện goog.require ('goog.userAgent.flash') của trình biên dịch Google Closure, tôi đã tạo 2 hàm này.
boolean hasFlash ()
Trả về nếu trình duyệt có flash.
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 (phiên bản)
Trả về nếu phiên bản flash lớn hơn phiên bản được cung cấp
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)
}