Pergunta

O plug-in Java do Google Chrome bloqueia até que você permita explicitamente sua execução. https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=en-US

Como posso detectar em javascript se o Chrome está bloqueando?

Foi útil?

Solução

Não é apenas o Chrome que usa recursos clique para reproduzir - Firefox (Java feito clique para reproduzir via lista de bloqueio), Opera (seu modo Turbo torna todos os plug-ins clique para reproduzir), ... e também há Complementos / extensões que evitam que os plug-ins sejam executados automaticamente.

Nenhuma dessas opções permite que você descubra que plug-ins são reproduzidos com um clique em scripts de conteúdo. Portanto, o ideal é que você resolva o problema de uma maneira mais geral.

Você pode diferenciar entre o plug-in que não está sendo instalado (consulte navigator.plugins) e outros casos por

  • testando regularmente sua capacidade de script ou
  • ter a chamada do plugin no script de páginas quando é carregado

... e suponha que "falhou ao carregar ou foi bloqueado" com base nisso. Para isso, há uma página de práticas recomendadas no MDN para isso.

Essa distinção geralmente deve ser boa o suficiente. como o SoundCloud lida com plug-ins que são reproduzidos com um clique.

Outras dicas

Resposta editada 15/03/2013 para melhorar a precisão das informações

Uma lista de plug-ins suportados está disponível como uma matriz no objeto navigator:

navigator.plugins

Esta API é fora do padrão , mas todos os navegadores modernos o implementam.O suporte do Internet Explorer remonta pelo menos ao IE7, mas não está disponível nas versões antigas do Opera.

navigator.plugins tem esta estrutura básica:

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

Aqui está uma função que executa um loop em navigator.plugins e verifica a propriedade name para uma determinada string.Ele retorna true ou false se encontrado.

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

Use assim (não diferencia maiúsculas de minúsculas):

pluginEnabled('java');
pluginEnabled('flash');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top