Uma boa prática em desenvolvimento de sites e webapps é oferecer alternativas para funcionalidades que dependam de Javascript. Conhecido como progressive enhancement ou aperfeiçoamento progressivo.
[for english version, check this link]
Idealmente, você começa da experiência mais básica, sem Javascript, e progressivamente aperfeiçoa a experiência com nova funcionalidades. Ou ao menos, adicionar avisos e conteúdos que possam ser visto por usuários e robôs de busca sem Javascript.
Uma das formas é colocar elementos noscript
com descrição ou alternativa da funcionalidade, ou o aviso para o usuário. Infelizmente, o WordPress — o sistema de gerenciamento de conteúdo que usamos em clientes e projetos de clientes 2Aces — não oferece uma função específica para adicionar este elementos noscript.
A boa notícia é que é possível resolver isto usando o ótimo sistema de filtros do WordPress. Neste caso usando o filtro script_loader_tag
, como você pode ver abaixo.
/** * @summary filtra uma tag de script na fila e adiciona um elemento noscript após ela * * @description filtra uma tag de script na fila (identificada pela variável $handle) e adiciona * um elemento noscript após ela. Se também houver um script inline após o script * identificado por $handle, adiciona o elemento noscript após ele. * * @access público * @param string $tag A string da tag enviada pelo filtro `script_loader_tag` em WP_Scripts::do_item * @param string $handle O nome (handle) do como enviado pelo filtro `script_loader_tag` em WP_Scripts::do_item * @param string $src A origem (src) do script como enviado pelo filtro `script_loader_tag` em WP_Scripts::do_item * @return string $tag A variável $tag filtrada e com o elemento `noscript` */ function add_noscript_filter($tag, $handle, $src){ // como este filtro roda para cada script na fila // precisamos verificar se o $handle é igual o script // que queremos filtrar e adicionar o noscript a ele if ( 'script-handle' === $handle ){ $noscript = '<noscript>'; // você poderia pegar o conteúdo interno de outra função $noscript .= ' Este site demanda JavaScript '; $noscript .= '</noscript>'; $tag = $tag . $noscript; } return $tag; } // adiciona a função add_noscript_filter aos filtros em script_loader_tag // deve ysar 3 no último parmetro para garantirque $tag, $handle, $src // estejam disponíveis à funço add_noscript_filter add_filter('script_loader_tag', 'add_noscript_filter', 10, 3); |
Aproveite! A função acima também está disponível no Github.