Frage

Das Google Chrome-Block-Java-Plugin, bis Sie es explizit ausführen lassen. https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=de-US

Wie kann ich in Javascript erkennen, ob Chrome es blockiert?

War es hilfreich?

Lösung

Es ist nicht nur Chrome, das Click-to-Play-Funktionen verwendet - Firefox (Java hat Click-to-Play über eine Blockliste erstellt), Opera (ihr Turbo-Modus macht alle Plugins Click-to-Play), ... und es gibt auch Add-Ons / Erweiterungen, die verhindern, dass Plugins automatisch ausgeführt werden.

Mit keinem dieser Plugins können Sie anhand von Inhaltsskripten herausfinden, welche Plugins Click-to-Play sind. Idealerweise gehen Sie das Problem also allgemeiner an.

Sie können zwischen dem nicht installierten Plugin (siehe navigator.plugins) und anderen Fällen entweder unterscheiden

  • Testen Sie regelmäßig die Skriptfähigkeit oder
  • Wenn das Plugin beim Laden in das Seitenskript aufgerufen wird

    ... und nehmen an, dass "nicht geladen oder blockiert wurde" basierend darauf. Zu diesem Zweck gibt es auf MDN eine Best-Practice-Seite .

    Diese Unterscheidung sollte normalerweise gut genug sein, überprüfen Sie z. Wie SoundCloud mit Plugins umgeht, die per Mausklick abgespielt werden.

Andere Tipps

Antwort bearbeitet am 15.03.2013, um die Genauigkeit der Informationen zu verbessern

Eine Liste der unterstützten Plugins ist als Array im navigator-Objekt verfügbar:

navigator.plugins

Diese API ist nicht standardisiert , aber alle modernen Browser implementieren es.Die Unterstützung für Internet Explorer geht auf mindestens IE7 zurück, ist jedoch in alten Versionen von Opera nicht verfügbar.

navigator.plugins hat folgende Grundstruktur:

PluginArray [
    ...
    Plugin {
        description: "Java Plug-In 2 for NPAPI Browsers"
        filename: "JavaAppletPlugin.plugin"
        length: 17
        name: "Java Plug-In 2 for NPAPI Browsers"
    },
    ...
]

Hier ist eine Funktion, die den navigator.plugins durchläuft und die name-Eigenschaft für eine bestimmte Zeichenfolge überprüft.Es wird true oder false zurückgegeben, falls gefunden.

function pluginEnabled(name) {
    var plugins = navigator.plugins,
        i = plugins.length,
        regExp = new RegExp(name, 'i');
    while (i--) {
        if (regExp.test(plugins[i].name)) return true;
    }
    return false;
}

Verwenden Sie es so (ohne Berücksichtigung der Groß- und Kleinschreibung):

pluginEnabled('java');
pluginEnabled('flash');

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top