Adakah yang memiliki contoh skrip yang dapat bekerja dengan baik di IE / Firefox untuk mendeteksi apakah browser mampu menampilkan konten flash yang disematkan. Saya katakan dengan andal karena saya tahu itu tidak mungkin 100% setiap saat.
Adakah yang memiliki contoh skrip yang dapat bekerja dengan baik di IE / Firefox untuk mendeteksi apakah browser mampu menampilkan konten flash yang disematkan. Saya katakan dengan andal karena saya tahu itu tidak mungkin 100% setiap saat.
Jawaban:
SWFObject sangat andal. Saya telah menggunakannya tanpa masalah cukup lama.
$('html').addClass(typeof swfobject !== 'undefined' && swfobject.getFlashPlayerVersion().major !== 0 ? 'flash' : 'no-flash');
if( swfobject.hasFlashPlayerVersion("8.0") ) { }
Throws false jika tidak ada flash yang terpasang. Nomor tersebut adalah versi pemutar flash minimum yang diperlukan.
Saya setuju dengan Max Stewart . SWFObject adalah cara untuk pergi. Saya ingin melengkapi jawabannya dengan contoh kode. Ini harus membantu Anda memulai:
Pastikan Anda telah menyertakan swfobject.js
file tersebut (dapatkan di sini ):
<script type="text/javascript" src="swfobject.js"></script>
Kemudian gunakan seperti ini:
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");
}
Ganti "9.0.115" dengan versi flash minimum apa pun yang Anda butuhkan. Saya memilih 9.0.115 sebagai contoh karena itulah versi yang menambahkan dukungan h.264.
Jika pengunjung tidak memiliki flash, itu akan melaporkan versi flash "0.0.0", jadi jika Anda hanya ingin tahu apakah mereka memiliki flash, gunakan:
if(swfobject.hasFlashPlayerVersion("1"))
{
alert("You have flash!");
}
else
{
alert("You do not flash :-(");
}
if(SWFobject && SWFobject.hasFlashPlayerVersion("1")) { // code here }
Saya tahu ini adalah posting lama, tetapi saya sudah mencari beberapa lama dan tidak menemukan apa pun.
Saya telah menerapkan Perpustakaan Deteksi Flash JavaScript . Ini bekerja dengan sangat baik dan didokumentasikan untuk penggunaan cepat. Saya benar-benar membutuhkan waktu 2 menit. Berikut kode yang saya tulis di header:
<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>
Anda dapat menggunakan compiler closure untuk menghasilkan deteksi flash kecil antar browser:
// ==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');
}
yang menghasilkan kode "terkompilasi" berikut:
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
dari Closure Compiler Google)? Saya hanya ingin memastikan bahwa saya tidak melewatkan beberapa perbedaan nuansa di sini.
Versi minimum yang pernah saya gunakan (tidak memeriksa versi, hanya Plugin Flash):
var hasFlash = function() {
return (typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) ? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) : navigator.plugins["Shockwave Flash"];
};
Perpustakaan Deteksi Flash JavaScript Carl Yestrau, di sini:
http://www.featureblend.com/javascript-flash-detection-library.html
... mungkin yang Anda cari.
Mungkinkah kit deteksi pemutar flash adobe bisa membantu di sini?
http://www.adobe.com/products/flashplayer/download/detection_kit/
Mendeteksi dan menyematkan Flash dalam dokumen web adalah tugas yang sangat sulit.
Saya sangat kecewa dengan kualitas dan markup yang tidak memenuhi standar yang dihasilkan dari solusi SWFObject dan Adobe. Selain itu, pengujian saya menemukan bahwa pembaru otomatis Adobe tidak konsisten dan tidak dapat diandalkan.
Pustaka Deteksi Flash JavaScript (Deteksi Flash) dan Pustaka Pembuat HTML Flash JavaScript (TML Flash) adalah solusi markup yang dapat dibaca, dipelihara, dan sesuai standar.
- "Luke membaca sumbernya!"
Kode untuk satu isFlashExists
variabel liner :
<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>
Perhatikan bahwa ada alternatif seperti ini: swfobject.getFlashPlayerVersion();
Lihat sumbernya di http://whatsmy.browsersize.com (baris 14-120).
Berikut adalah kode browser silang yang diabstraksikan di jsbin untuk deteksi flash saja , berfungsi di: FF / IE / Safari / Opera / Chrome.
detectObject()
mitra untuk IE.
bagaimana dengan:
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;
};
Jika Anda tertarik dengan solusi Javascript murni, berikut ini yang saya salin dari 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;
}
Jika Anda hanya ingin memeriksa apakah flash diaktifkan, ini sudah cukup.
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;
}
Catatan: hindari mencentang enabledPlugin , beberapa browser seluler memiliki plugin tap untuk mengaktifkan flash, dan akan memicu negatif palsu.
Untuk membuat objek Flash yang sesuai dengan standar (dengan JavaScript), saya sarankan Anda untuk melihatnya
Objek Flash Tidak Mencolok (UFO)
Telah membuat .swf
pengalihan kecil . Jika browser mengaktifkan flash, browser akan mengarahkan ulang.
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");
}
}
Menggunakan pustaka Google Closure compiler goog.require ('goog.userAgent.flash'), saya membuat 2 fungsi ini.
boolean hasFlash ()
Kembali jika browser memiliki 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 (versi)
Kembali jika versi flash lebih besar dari versi yang disediakan
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)
}