2013-07-18 10 views
9

Jak mogę sprawdzić używając jquery lub javascript czy wtyczka flash jest zablokowana w chrome?jak sprawdzić wtyczkę flash jest zablokowany w Chrome

Możemy sprawdzić dla niepełnosprawnych wtyczki Flash za pomocą poniższego

((typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") || (window.ActiveXObject && (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) != false)); 

W Chrome można wyłączyć plugin indywidualnie klikając wyłączyć wtyczkę indywidualnej. Następnie, jeśli wyłączymy wtyczkę indywidualnie, powyższe zapytanie działa i zwraca false. Ale jeśli zablokujemy wszystkie wtyczki, zwróci to tylko true.Home mój problem, jak wykryć wtyczki został zablokowany.

+0

Czy coś jest nie tak z tym, co masz? Czy to jest pytanie, czy też próbowałeś sobie odpowiedzieć? – Eric

+0

czym się różni od wykrycia, czy wtyczka Flash jest wyłączona czy zablokowana? Domyślam się, że skończysz z tym samym wynikiem - bez wtyczki flash. – intuitivepixel

+0

W przeglądarce Chrome można wyłączyć wtyczkę indywidualnie, klikając opcję wyłączania poszczególnych wtyczek. Następnie, jeśli wyłączymy wtyczkę indywidualnie, powyższe zapytanie działa i zwraca false. Ale jeśli zablokujemy wszystkie wtyczki, zwróci to tylko true.Home mój problem, jak wykryć wtyczki został zablokowany. – virus

Odpowiedz

2

Możesz użyć czegoś takiego jak swfobject do obsługi wykrywania błysku, ale coś takiego również powinno działać;

var flashAvailable = false; 
try { 
    var flash = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 
    if(flash) { 
    flashAvailable = true; 
    } 
} 
catch(e) { 
    if(navigator.mimeTypes ["application/x-shockwave-flash"] != undefined) { 
    flashAvailable = true; 
    } 
} 
+2

W przeglądarce Chrome można wyłączyć wtyczkę indywidualnie, klikając opcję wyłączania poszczególnych wtyczek. Następnie, jeśli wyłączymy wtyczkę indywidualnie, powyższe zapytanie działa i zwraca false. Ale jeśli zablokujemy wszystkie wtyczki, zwróci ona tylko wartość true.Stąd moje obawy związane z tym, jak wykryć wtyczkę zostały zablokowane. Powyższa odpowiedź nie jest oczekiwana. – virus

+0

@ wirus, rozumiem, przepraszam: / – intuitivepixel

0

Odkryłem, że jedyną niezawodną metodą jest uzyskanie pojedynczego elementu Flash, aby ostrzec przeglądarkę, że jest włączona, tj. że nie jest zablokowany.

to zrobić za pomocą następującego kodu na początku mojego pliku Flash:

import flash.external.ExternalInterface; 
ExternalInterface.call('flashHasLoaded','my-identifier'); 

To wtedy wyzwala funkcja JavaScript w przeglądarce:

<script type="text/javascript"> 
    function flashHasLoaded(optionalIdentifier){ 
     alert("A flash file has started running"); 
     if(optionalIdentifier == "specific-thing") alert("Specific thing loaded - do something"); 
    } 
</script> 

Pamiętaj, że to przyzwyczajenie spust zaraz , tylko po wczytaniu Flasha i uruchomieniu.

0

Jedynym sposobem na sprawdzenie, czy przeglądarka blokuje wtyczkę, jest wykonanie wywołania wtyczki i sprawdzenie, czy się zwraca. W twoim przypadku wykonaj następujące kroki:

  1. Sprawdź, czy wtyczka Flash jest zainstalowana.
  2. Zainicjuj flash swf jak zwykle.
  3. Wywołanie funkcji za pośrednictwem zewnętrznego interfejsu Flash, zaprojektowanego tak, aby informować użytkownika, czy wtyczka reaguje.
  4. Jeśli odpowie, kontynuuj normalnie.
  5. Jeśli nie odpowiada, najlepiej wracaj do rozwiązania javascript.

Ponieważ jest to sprawa bezpieczeństwa przeglądarka nie masz bezpośredni dostęp do API, które można powiedzieć, czy żądana wtyczka jest blokowany. Myślę, że to może być jedyne dostępne rozwiązanie w tej chwili. Zauważ też, że najnowsza wersja chrome (54.0.2840.59 teraz) chrome blokuje wszystkie flashowanie, jeśli działa w iframe.

Powiązane problemy