سؤال

هل لدى أي شخص مثال لبرنامج نصي يمكنه العمل بشكل موثوق عبر IE/Firefox لاكتشاف ما إذا كان المتصفح قادرًا على عرض محتوى الفلاش المضمن.أقول بشكل موثوق لأنني أعلم أن ذلك غير ممكن بنسبة 100٪ في كثير من الأحيان.

هل كانت مفيدة؟

المحلول

SWFObject غير موثوقة جدا. لقد استخدمت دون عناء لفترة طويلة.

نصائح أخرى

وأنا أتفق مع ماكس ستيوارت . 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" مع كل ما لا يقل فلاش الإصدار الذي تحتاجه. اخترت 9.0.115 كمثال لأن هذا هو الإصدار الذي اضاف لدعم H.264.

إذا لم يقم الزائر فلاش، فإنه سيتم الإبلاغ عن نسخة من فلاش "0.0.0"، لذلك إذا كنت ترغب فقط في معرفة ما إذا كان لديهم فلاش على الإطلاق، الاستخدام:

if(swfobject.hasFlashPlayerVersion("1"))
{
    alert("You have flash!");
}
else
{
    alert("You do not 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>        

هل يمكن استخدام إغلاق مترجم لتوليد صغيرة، عبر متصفح كشف فلاش:

// ==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");

والحد الأدنى للإصدار لقد استعملت من أي وقت مضى (لا تحقق النسخة، فقط فلاش البرنامج المساعد):

var hasFlash = function() {
    return (typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) ? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) : navigator.plugins["Shockwave Flash"];
};
جافا سكريبت فلاش الكشف مكتبة

وكارل Yestrau، وهنا:

<لأ href = "HTTP: //www.featureblend كوم / جافا سكريبت فلاش للكشف-library.html "يختلط =" noreferrer "> http://www.featureblend.com/javascript-flash-detection-library.html

... قد يكون ما كنت تبحث عنه.

وربما لاعب فلاش عدة كشف اللبن يمكن أن يكون مفيدا هنا؟

http://www.adobe.com/products/flashplayer/download/detection_kit /

وكشف وتضمين فلاش في وثيقة على شبكة الإنترنت هو مهمة صعبة بشكل مدهش.

وخاب أملي جدا مع نوعية وغير متوافق مع المعايير العلامات الناتجة عن كلا SWFObject وحلول أدوبي. بالإضافة إلى ذلك، وجد بلدي التجارب التحديث التلقائي أدوبي لتكون متناسقة وغير موثوق بها.

وكشف فلاش مكتبة جافا سكريبت (فلاش الكشف) و <لأ href = "http://featureblend.com/javascript-flash-html-generator-library.html" يختلط = "noreferrer"> جافا سكريبت فلاش HTML مولد مكتبة (فلاش TML) هي مقروءا، تستعصي على الحل والمعايير المتوافقة مع الترميز .

و- "قراءة لوقا المصدر!"

ورمز للسفينة واحدة متغير 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).

هنا هو المتصفح الملخص كود على jsbin ل كشف الفلاش فقط، يعمل على:FF/IE/سفاري/أوبرا/كروم.

وماذا عن:

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;
};

إذا كنت ترغب في حل جافا سكريبت نقي، وهنا هو الذي يمكنني نسخ من <لأ href = "http://www.blangdon.com/writing/about/detect-flash-with-javascript/" يختلط = "نوفولو"> بريت :

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;
}

إذا أردت فقط للتحقق ما إذا تم تمكين فلاش، وهذا ينبغي أن يكون كافيا.

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;

}

ملحوظة: تجنب التدقيق على enabledPlugin ، أو بعض متصفح المحمول لديها الضغط للتمكين البرنامج المساعد فلاش، وسوف يؤدي سلبية كاذبة

لإنشاء ستاندارت متوافقة الكائن فلاش (مع جافا سكريبت ولكن)، فإنني أوصي لكم نلقي نظرة على

وكائنات مزعجة فلاش (UFO)

http://www.bobbyvandersluis.com/ufo/index.html

ولقد خلقت .swf الصغيرة التي الموجهات. إذا كان المتصفح هو تمكين فلاش فإنه سيتم إعادة توجيه.

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");

}

}

باستخدام مكتبة goog.require('goog.userAgent.flash') مترجم Google Closure، قمت بإنشاء هاتين الوظيفتين.

منطقي hasFlash()

يعود إذا كان المتصفح يحتوي على فلاش.

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;
}

المنطقية isFlashVersion (الإصدار)

يتم إرجاعه إذا كان إصدار الفلاش أكبر من الإصدار المقدم

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)
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top