Detectar se o Google Chrome bloqueia o plug-in Java
-
27-10-2019 - |
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?
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');