funciona - Detección de destello del navegador cruzado en Javascript
jquery (15)
Código para un trazador de líneas isFlashExists
variable 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>
Tenga en cuenta que existe una alternativa como esta: swfobject.getFlashPlayerVersion();
¿Alguien tiene un ejemplo de script que puede funcionar de manera confiable en IE / Firefox para detectar si el navegador es capaz de mostrar contenido flash incrustado? Digo confiadamente porque sé que no es posible el 100% del tiempo.
Detectar e incrustar Flash dentro de un documento web es una tarea sorprendentemente difícil.
Estaba muy decepcionado con la calidad y el marcado compatible con los estándares generados tanto por SWFObject como por las soluciones de Adobe. Además, mis pruebas encontraron que el actualizador automático de Adobe es inconsistente y poco confiable.
La Biblioteca de Detección Flash de JavaScript (Flash Detect) y la Biblioteca de Flash Generator de JavaScript (Flash TML) son una solución de marcado legible, mantenible y compatible con los estándares.
- "¡Luke leyó la fuente!"
Estoy de acuerdo con Max Stewart . SWFObject es el camino a seguir. Me gustaría complementar su respuesta con un ejemplo de código. Esto debería hacerte comenzar:
Asegúrese de haber incluido el archivo swfobject.js
(obtenerlo here ):
<script type="text/javascript" src="swfobject.js"></script>
Entonces úsalo así:
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");
}
Reemplaza "9.0.115" con la versión mínima de flash que necesites. Elegí 9.0.115 como ejemplo porque esa es la versión que agregó soporte h.264.
Si el visitante no tiene flash, informará una versión flash de "0.0.0", por lo que si solo quiere saber si tiene flash, use:
if(swfobject.hasFlashPlayerVersion("1"))
{
alert("You have flash!");
}
else
{
alert("You do not flash :-(");
}
Han creado un pequeño .swf
que redirige. Si el navegador está habilitado con flash, se redireccionará.
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");
}
}
La biblioteca de detección de JavaScript de Carl Yestrau, aquí:
http://www.featureblend.com/javascript-flash-detection-library.html
... puede ser lo que estás buscando.
Para crear un objeto Flash compatible con standart (sin embargo, con JavaScript), le recomiendo que eche un vistazo a
Objetos Flash discretos (OVNI)
Puede usar el compilador de cierre para generar una pequeña detección de flash entre navegadores:
// ==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'');
}
que da como resultado el siguiente código "compilado":
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");
Sé que esta es una publicación anterior, pero he estado buscando por un tiempo y no encontré nada.
Implementé JavaScript Flash Detection Library . Funciona muy bien y está documentado para un uso rápido. Literalmente me tomó 2 minutos. Aquí está el código que escribí en el encabezado:
<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>
Si está interesado en una solución de Javascript puro, aquí está la que copié de 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;
}
Si solo desea comprobar si la memoria flash está habilitada, esto debería ser suficiente.
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;
}
Nota: evite marcar enabledPlugin , algunos navegadores móviles tienen habilitado el plugin de Flash y activarán el falso negativo.
Tal vez el kit de detección de flash player de adobe podría ser útil aquí?
http://www.adobe.com/products/flashplayer/download/detection_kit/
Ver la fuente en http://whatsmy.browsersize.com (líneas 14-120).
Aquí está el código del navegador cruzado abstraído en jsbin para detección de flash solamente , funciona en: FF / IE / Safari / Opera / Chrome.
Versión mínima que he usado alguna vez (no comprueba la versión, solo Flash Plugin):
var hasFlash = function() {
return (typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) ? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) : navigator.plugins["Shockwave Flash"];
};
qué pasa:
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;
};
SWFObject es muy confiable. Lo he usado sin problemas por bastante tiempo.