Eu estava pensando que, se todos os usuários de um site precisam ter o JavaScript ativado, está tudo bem em usar um JavaScript invasivo?
Eu sou totalmente a favor do aprimoramento progressivo, mas qual é o sentido em que um aplicativo Web avançado repele os usuários na porta se eles têm um navegador antigo ou JavaScript desativado?
Temos um público-alvo muito reduzido e podemos dizer ao público-alvo que navegador e plugins / funcionalidades eles precisam ter. Então, minha pergunta é: é possível misturar JS e HTML nesse caso? Como usar atributos onclick.
Respostas:
Esta é uma decisão de negócios e não uma decisão de design.
Há um custo para fornecer uma versão do site que funcione sem JavaScript (ou Flash ou Silverlight). A empresa precisa decidir se a perda de receita / visitantes vale a pena ou não.
Portanto, se custar US $ 10.000 para escrever esta versão (o número pode estar no lado grande, mas existe apenas para este exemplo), a empresa recuperará essa despesa ao longo da vida útil do site? Caso contrário, não forneça essa versão.
No entanto, se custar apenas US $ 100 para escrever esta versão, faria sentido fornecer a degradação normal.
Depois de tomar a decisão comercial de segmentar apenas navegadores habilitados para JavaScript e esperar que seus usuários tenham o JavaScript habilitado, faz todo o sentido fazer com que seu aplicativo aproveite os recursos que você tem agora disponíveis. A única coisa que você precisará fazer é (como o próprio Stack Overflow) colocar um aviso de que o site não funcionará corretamente se o usuário não o habilitar.
fonte
Algo que ninguém mais trouxe até agora ...
99% dos sites recebem um visitante em particular, um com pouco ou nenhum JavaScript. Esse visitante tem um nome: Googlebot .
Um grande motivo para todos também se preocuparem com visitantes cegos ...
Se você é um dos poucos que não se importa com o tráfego de mecanismos de pesquisa, bem, essa é sua prerrogativa - mas certamente não cria uma regra geral.
fonte
As pessoas que escrevem coisas para ambientes internos específicos são uma grande razão pela qual o IE6 ainda está por aí.
Pense nisso
fonte
Se você estiver criando um site apenas para JS (talvez 'aplicativo', neste caso, seja uma palavra melhor), a chamada 'discrição' do JS não importa tanto quanto no caso, quando você precisa degradar normalmente para não- Versão JS.
No entanto: o JavaScript escrito de uma maneira discreta é geralmente mais fácil de escrever (e pelo menos acho dessa maneira) e manter. É mais fácil introduzir alterações no layout HTML que não quebram o JS e alterações no JS sem se preocupar em quebrar o HTML.
fonte
Se você estiver construindo um site, eu manteria o JavaScript discreto. No entanto, se você estiver criando algum tipo de aplicativo (como o Google Docs), o JavaScript será bastante invasivo.
JavaScript e HTML5 são ótimos para criar aplicativos, se essa for sua necessidade, mas é realmente uma escolha comercial.
fonte
A maioria dos usuários (meus usuários, não conheço seus usuários) tem JavaScript disponível e ativado. Vamos dar a esses usuários uma ótima experiência. No entanto, você ainda precisa fornecer uma versão do seu site que funcione sem Javascript. Eu sei que é um aborrecimento criar duas versões, mas é assim que acontece no desenvolvimento web. (Na realidade, talvez você precise criar várias versões, uma terceira pode ser uma versão móvel do seu site).
O que você não quer fazer é projetar para o denominador menos comum: "Bem, existem alguns usuários que têm o Javascript desativado, então vamos projetar nosso site para funcionar bem para eles - sem Javascript, acesse o servidor para tudo . " Isso penaliza a maioria dos usuários que possuem Javascript.
fonte
Você mencionou o uso de atributos onlick. Você planeja usar um manipulador de eventos JavaScript para navegação na página?
Eu recomendaria contra isso por um único motivo: quebra o clique do meio .
Para clicar regularmente no link, supondo que o JavaScript esteja ativado, eles serão funcionalmente equivalentes:
Se você tentar dar um clique no meio no primeiro exemplo, obterá uma página em branco em vez de myPage.htm.
Além deste exemplo, acho que é bom usar JavaScript intrusivo se isso fizer sentido para os negócios. Leva menos tempo para escrever (mas não necessariamente mantém) o JavaScript embutido, e a perda do aprimoramento progressivo pode não ser importante na sua situação.
fonte
O JavaScript invasivo estava bem há 10 anos. Também é bom se você é um amador, ou se está construindo um protótipo descartável, ou se houver alguma circunstância que o exija, como dependência de código legado ou código orientado a dados e isso custaria muito muito para consertar
Se você estiver construindo algo desde o início, siga os padrões, escreva um código bom, limpo e sustentável. Escreva algo do qual você se orgulhe e que não o deixará doente daqui a um ano, quando algum pobre coitado pedir ajuda, porque não entende o que você fez. Escreva algo que garanta que seus web designers possam trocar CSS facilmente, sem ter que procurar por HTML e JavaScript confusos.
Crie o aplicativo para que ele tenha espaço para crescer, para que qualquer desenvolvedor possa entrar e fazer a manutenção. O tempo investido agora economizará tempo no futuro, se não o seu tempo, o de outra pessoa.
Verifique se o JavaScript pode ser reutilizado em outro contexto. Certifique-se de que um redesenho completo do site possa ser apenas isso, um redesenho e não uma reconstrução completa de algo que já existe, mas que não foi construído de maneira rígida.
Imagine como seria embaraçoso ter que gastar a mesma quantidade de tempo em um reprojeto que o construiu originalmente.
Confie na minha experiência, o JavaScript não obstrutivo impedirá que você cometa alguns erros dispendiosos.
fonte
Tudo bem, basta me chamar de detentor de criptas em todo o necro que eu faço, mas nunca senti que o verdadeiro valor disso fosse entendido corretamente. Historicamente, foi afirmado que "JavaScript discreto" ou, mantendo seu JS fora do HTML por meio de atributos de manipulador de eventos HTML embutidos e tags de script que não se vinculavam ao arquivo o máximo possível, é um elemento importante de:
MENTIRAS! (bem, agora eles seriam)
A verdade é que você pode fazer JavaScript tecnicamente intrusivo e ainda assim retirar os três itens acima. A menos que você estivesse criando conteúdo HTML dinamicamente, o que era um grande não SEO no dia.
Mas pare e pense ... em você!
Realmente, o grande benefício, a maior e mais baixa vitória de manter a separação sempre foi o benefício direto que o desenvolvedor obtém disso. Você pode ter quantos manipuladores de eventos desejar no mesmo elemento html para o mesmo evento que for conveniente. Isso significa que, se uma tag
class="some_class"
sempre obtém um determinado comportamento, mas também recebe um bônus quando está dentro de umaid="bonus_behavior"
div, não precisamos começar a mexer com a lógica dentro do nosso manipulador de eventos permitido para ramificar isso. Podemos apenas adicionar ou não manipuladores, dependendo do contexto.Fácil de Ler Também
Outro benefício é legibilidade. Essa era uma preocupação mais crítica quando as ferramentas do navegador consistiam na mensagem de erro exclusiva do IE, informando que havia algo errado,
[object]
mas a IMO ainda é um grande problema. CSS aqui, JS lá e HTML são o local onde eles e o servidor se encontram. Com todas essas coisas reunidas em um só lugar, faz sentido confiar nos ganchos (os IDs, classes e hierarquia) para criar uma camada de abstração que tudo usa para se conectar ao HTML.Na IMO, quanto mais você PODE manter seu HTML, CSS e JS separados, mais fácil é não apenas ler, mas também modificar e entender o que está acontecendo. Eu vejo uma div vazia com "dynamic_combo_box" como uma classe e tenho uma boa idéia de que algo está fazendo uma seleção sofisticada que carrega dados dinamicamente. Eu tenho uma liderança em como descobrir isso no JS e no CSS e se eu me deparar com a classe nessas preocupações, terei uma boa idéia do que se trata e como encontrá-lo no HTML.
Muito fácil de tornar ainda mais desleixado
E, claro, a legibilidade tende a andar de mãos dadas com a manutenção. Quando você faz as coisas diretamente, despejando tudo em tags de script em que o HTML relevante está, muitas vezes, fica mais fácil para as pessoas simplesmente recortar e colar esse script no HTML de outra página em que estão trabalhando quando eles querem funcionalidade semelhante, o que significa que agora você tem uma coisa que provavelmente se tornará duas coisas irritantemente semelhantes, mas não 100% iguais, cujo comportamento pode se tornar problemático ao longo do tempo ao desafiar as expectativas e exigir a adição de ramificações mais inúteis para lidar com as exceções necessárias. outro não.
Portanto, o comportamento de manipulação desses ganchos HTML incentiva a reutilização do código de maneira inteligente. Se você precisar ramificar o comportamento para uma implementação alternativa, basta acessar a mesma função e manipulá-la com a hierarquia HTML ou talvez com um att de dados acionando algum comportamento alternativo. É uma parada obrigatória para quem deseja entender como os elementos de interface do usuário de um determinado tipo funcionam e os tipos de recortar e colar desprezivelmente preguiçosos da maneira errada farão a coisa certa / mais sustentável apenas porque é a coisa mais fácil de fazer. faça agora e essa é a melhor maneira de fazer a manutenção acontecer. Torne a coisa mais fácil de fazer, mesmo para alguém que não se importa menos, seja por pânico ou apatia.
Mas e quanto a 2014?
Pode ser um ponto legítimo que, em aplicativos modernos de página única, algumas dessas coisas difíceis talvez não devam ser tão dogmaticamente como têm sido, mas acredite em mim quando digo que não acho que sou a única pessoa que foi vendido porque facilita o trabalho. Sou preguiçoso de uma maneira (espero) principalmente boa. Gosto quando preciso mudar as coisas em um só lugar para obter alterações em todo o aplicativo, quando só preciso procurar em um lugar para descobrir qual é o erro e quando tenho facilidade para entender o que diabos é isso. acontecendo e como melhor reutilizar esse código para fazer algo muito semelhante.
É bom que dividir um banco de dados ou uma camada de dados seja bom. Em última análise, é uma economia de tempo por que eu não fiz isso, como levar cinco minutos para lavar a roupa na noite anterior, em vez de gastar 10 minutos em congelar a boxer e realizar verificações paranóicas na manhã seguinte.
Para mim, são essas motivações egoístas que sempre foram o ponto principal do motivo pelo qual apego não apenas a JS discreta, mas a separação de estilo / comportamento / conteúdo preocupa-se o máximo possível, mesmo que O que o WG seja o mais danado possível. atrapalhe essas preocupações de maneiras compreensíveis e legais / práticas.
Agora que todo mundo está fazendo SPAs e é quase bobo tentar convencer os negócios de que devemos nos preocupar com pessoas que executam sem JS (a acessibilidade agora pode, supostamente, ser tratada com conteúdo gerado por JS), parece que a próxima geração de desenvolvedores de JS se importa menos sobre isso, mas a IMO, ainda há uma vitória por lá e é principalmente para você, o desenvolvedor, escrevendo e mantendo essas coisas. E, realmente, essa vitória sempre deve ter sido o ponto mais sublinhado, mas nunca foi por algum motivo, porque finalmente beneficia você e também o produto por um acidente feliz, devido à facilidade de ajustar / modificar / depurar.
Está tudo bem?
Bem, sim, eu acho. Em um aplicativo descartável descartável para um concurso ou algo assim, talvez. Mas eu ainda faria isso apenas porque tenho o hábito disso e não é realmente difícil de fazer.
fonte
Se você conhece seu ambiente operacional de destino, Javascript e estruturas como o jQuery podem ser uma verdadeira dádiva de Deus. Por exemplo, em um ambiente corporativo em que o SOE possui Javascript e IE8 mais do que seguro para gravar aplicativos intensivos de navegador do lado do cliente.
fonte
Facilitar a degradação graciosa é apenas um dos muitos fatores que tornam o JavaScript discreto uma opção atraente e, na minha opinião, não é o mais importante.
Por experiência pessoal, eu diria que, se você estiver falando de um projeto maior, que provavelmente evoluirá muito com o tempo, o uso de um estilo discreto tornará o aplicativo MUITO mais fácil de manter, depurar e refatorar. Essa é a maior razão pela qual sempre usamos estilo discreto, mesmo em sites que exigem que o JavaScript seja ativado para todos os visitantes.
fonte
Em geral, se você estiver desenvolvendo um "site" tradicional que está disponível anonimamente, indexado pelos mecanismos de pesquisa e onde a receita é gerada por anúncios, você deve fornecer uma degradação suave. A idéia é que esse tipo de site viva e morra por acessibilidade, limitando a acessibilidade significa perder uma tonelada de visualizações de página e, portanto, receita com anúncios.
Um acesso restrito, geralmente "site" (aplicativo da Web) não indexável e com base na receita de anúncios, pode ser muito mais flexível. Tudo se resume a uma decisão entre amplitude de suporte, profundidade de recursos e custo de desenvolvimento. Pense nisso como desenvolver um aplicativo tradicional: qual plataforma você suporta e quais são as especificações mínimas? Se você segmentar apenas uma plataforma e especificações limitadas, poderá se concentrar em fornecer um produto superior com menos custos de desenvolvimento e suporte, ao custo de uma possível participação no mercado em potencial.
Exemplo: a Pesquisa do Google é um site. O Google Docs é um aplicativo da web. A Pesquisa do Google é sem frescura e pode funcionar de forma idêntica sem JavaScript, CSS e / ou imagens, etc. O Google Docs simplesmente não funciona com o JavaScript desativado e nem é degradado normalmente - nem mesmo um aviso para ativar o JavaScript.
fonte
Eu prefiro ter mais layout e navegação manipulados em CSS. Sim, o Lynx pode não suportá-lo, mas todos os navegadores com todos os recursos que eu conheço não podem desativá-lo. Em seguida, o JavaScript pode ser usado para coisas mais chamativas, mas não necessárias. Eu também gosto de Ruby on Rails para esse fim. Ele pode fazer muito do que o JavaScript seria necessário para o servidor, desde que você não precise de atualizações dinâmicas de página.
Mais direcionado para a resposta da pergunta: NÃO GOSTO do JavaScript necessário, mas há um caso de negócios em que é necessário, como observou ChrisF.
fonte
Javascript é o padrão padrão quando se trata de qualquer tipo de conteúdo dinâmico entregue no lado do cliente, se eles não tiverem JS, provavelmente não terão o silverlight.
Então você tem que pensar em seu mercado / público: você é programmers.stackexchcange ou bbc.co.uk/news? públicos muito diferentes.
fonte
Como você pode olhar na web e ver "javascript invasivo" em muitos sites, sua pergunta básica é respondida; sim, está tudo bem, e muitos sites populares fazem isso, até o Google.
Mais importante, no entanto, é a degradação graciosa da funcionalidade, mesmo que você insista para que os usuários tenham o Javascript ativado, você deve fornecer um nível decente de experiência para usuários não-js, ou eles nunca retornarão voluntariamente.
fonte