Original Article: "How Do I Force...?"
Author: Dan's Web Tips

"Como faço para forçar...?"

DICA: Compreenda que o HTML não pode "forçar" qualquer tipo de ação e não continuar tentando contornar essa limitação; Você apenas irritará seus usuários e tornará seu site menos acessível.

As perguntas comuns de "novato" nos grupos de notícias dedicados à criação da Web são aquelas que começam "Como eu forço o navegador do usuário para ..."

  • não tem um botão "back"?
  • Um dos links na página funciona como um botão "back"?
  • Elimine o histórico passado da navegação do usuário para que o usuário não possa voltar do meu site?
  • salve o histórico passado da navegação do usuário e envie-o para o meu site para que eu possa analisá-lo para pesquisas de marketing?
  • reverte todos os links visitados de volta para a cor do link não visitado?
  • Suprime o ponteiro do mouse "hand" quando o usuário move o mouse sobre um link, então ele pode ser um link oculto?
  • Seja dimensionado em 640 x 480, não importa o tamanho do monitor do usuário?
  • não tem barras de rolagem independentemente do tamanho do monitor do usuário?
  • instale minhas fontes personalizadas no sistema do usuário para que minha página exiba o jeito que eu quero, mesmo que o usuário ainda não tenha essas fontes?
  • ignore as configurações e controles de tamanho de fonte do usuário e mantenha os tipos de letra do mesmo tamanho, independentemente de como eles estão configurados?
  • solicite ao usuário que guarde um arquivo no disco quando o usuário clicar nele, em vez de exibi-lo dentro do navegador?
  • Execute imediatamente um arquivo EXE do meu site quando o usuário clica nele, em vez de solicitar ao usuário salvar o arquivo?
  • Imprima meu formulário de pedido na impressora do usuário imediatamente quando ele entrar no meu site?
  • Veja minhas páginas da Web apenas como parte de um conjunto de quadros e não individualmente?
  • Veja minhas páginas da Web apenas individualmente, não como parte de um conjunto de quadros?
  • suprima o recurso "View Source" para que ninguém possa roubar meu código HTML?
  • Desative o recurso "Save as" para que ninguém possa roubar minhas páginas, gráficos e outros elementos?
  • suprime o botão "Print" para que ninguém possa roubar minhas páginas em forma impressa?
  • suprima todas as funções de clique direito e copiar e colar no meu site?
  • aparecer uma caixa de advertência sempre que um usuário tentar sair do meu site, para encorajá-lo a ficar?
  • salvar arquivos que os downloads do usuário no diretório que eu escolher, em vez de um diretório que o usuário escolhe?
  • suprime a caixa de diálogo de aviso que aparece (em algumas versões e configurações do navegador) quando meu site tenta executar um controle ActiveX, definir um cookie, ir entre páginas seguras e inseguras, etc.?
  • Desligue o JavaScript no navegador do usuário (para suprimir as janelas pop-up, alguns serviços gratuitos de hospedagem na Web adicionam)?
  • Active o JavaScript no navegador do usuário (para garantir que todos os meus efeitos especiais neato sejam exibidos!)
  • Suprime a exibição e a impressão do URL dos documentos, para que eu possa esconder do usuário como recuperar um documento específico diretamente e forçá-lo a passar pela minha estrutura de menu?
  • desative o "Bookmark" (ou "Favorites") recurso para que o usuário não possa marcar minha página?
  • Marque automaticamente minha página quando o usuário a visita pela primeira vez?
  • meu formulário é automaticamente enviado quando o usuário pressiona ENTER?
  • meu formulário não é enviado automaticamente quando o usuário pressiona ENTER?
  • suprima a caixa pontilhada que aparece em torno de imagens clicáveis quando selecionadas (em algumas versões do MSIE)?

...E a lista continua. Todos eles mostram uma falta de compreensão de como a Web funciona. Não há nenhuma maneira que um autor possa forçar qualquer coisa no usuario. Várias construções HTML podem sugerir certas ações por parte do navegador, mas não podem força-los.

É verdade que algumas construções e complementos mais recentes (às vezes não padronizados), especialmente linguagens de script como o JavaScript, podem "forçar" o comportamento de vários navegadores, pelo menos por parte de um navegador que suporte essa atividade. Mas em um navegador que não, e um em que tais complementos são desativados pelas preferências do usuário, eles não podem forçar nada. (Alguns navegadores, como Mozilla e Opera, estão ficando muito bons no desenvolvimento de configurações de preferências sofisticadas para permitir que os usuários desativem algumas das coisas mais irritantes que um site pode tentar fazer, como anúncios pop-under, enquanto ainda permite a maioria dos aprimoramentos multimídia que realmente podem melhorar a qualidade de um site.)

Mesmo que fosse possível forçar essas coisas no usuário, a questão é "Por que você quer fazer isso?" Uma grande parte da comunidade de usuários é capaz de se irritar com tais tentativas de manipular sua experiência de navegação e um usuário irritado provavelmente não retornará ao seu site. Os usuários estão acostumados a usar ferramentas de navegação padrão, como o botão Voltar do navegador, e não gostará se você conseguisse desativá-las de algum modo. Os usuários podem estar usando qualquer número de diferentes plataformas de máquinas e resoluções de exibição e podem não ser capazes ou não querer forçar uma largura de pixel em particular para se adequar aos layouts mal projetados que não podem redimensionar as configurações do usuário. Os usuários podem ver um risco de segurança na execução de applets e scripts incorporados e se recusarão a habilitar essas configurações, portanto, se o seu site os obrigar a navegar, ele simplesmente vai embora.

A falta de capacidade de forçar o comportamento do navegador é certamente frustrante para os desenvolvedores que são usados para criar produtos de software autônomos projetados para uma plataforma específica e que funcionam completamente do início ao fim sob o controle do desenvolvedor, mas se você estiver desenvolvendo para a Web, você Terá que perder essa mentalidade e aprender a aceitar o maior controle que o usuário da Web tem sobre a experiência de navegação.

Algumas notas sobre tentativas específicas de "Força"

Aqui estão alguns comentários mais específicos sobre algumas das coisas particulares que as pessoas muitas vezes desejam "forçar":

Forçando novas janelas do navegador para abrir, fechar, ser dimensionado para dimensões específicas e faltar controles normais, como o botão Voltar

Se o JavaScript estiver habilitado, você pode usá-lo para fazer essas coisas. Mas estes são os tipos de coisas que podem incomodar muitos usuários, pois eles alteram a interface do usuário normal do navegador e, se o usuário estiver com pouca memória, pode mesmo travar ou pendurar o sistema. Eles também podem obter o usuário em "loops" onde a mesma janela popup indesejada continua a abrir novamente toda vez que o usuário a fecha, aumentando o nível de irritação.

Removendo sites do histórico do "Back-Button"

Um pedido muito comum é tornar impossível o usuário retornar a uma página através do botão Voltar. Às vezes, há até uma razão legítima para isso, como para impedir que os elementos do formulário sejam submetidos duas vezes ou fora de ordem, ou para proteger a segurança das informações pessoais inseridas na página. Outras vezes é apenas um desejo irracional por parte de um cliente de controle que não consegue suportar os usuários escolhendo sua própria seqüência de visualização de seu site, ou mesmo navegar em sites de outras pessoas e voltar para o site original mais tarde. De qualquer forma, não é possível. Mesmo com linguagens de script, não sei como remover sites do histórico do usuário. Se a sua necessidade for para uma intranet ou quiosque onde você controla o navegador, você pode procurar um navegador customizado que tenha essas funções incorporadas.

Forçando as configurações de face, tamanho e cor da fonte, independentemente das configurações do navegador

Você pode sugerir configurações de fontes de várias maneiras, incluindo folhas de estilo e várias tags e atributos de apresentação (obsoletos em HTML 4.0). Em alguns navegadores, algumas dessas configurações "forçam" as configurações desejadas, independentemente da configuração do usuário. Esta é uma má idéia, pois pode resultar em páginas ilegíveis para usuários com necessidades especiais. Por exemplo, aqueles com visão fraca podem querer fontes maiores, e aqueles com cegueira de cores podem precisar definir combinações de cores que são legíveis para eles, mesmo que pareçam estranhas para os outros. Quanto mais o autor do site faz para tentar derrotar essas coisas, e quanto mais o navegador cooperar, menos legível será o site para esses usuários.

Forçando arquivos para baixar, executar, lançar aplicativos específicos, etc..

Você não pode fazer isso. Os protocolos da Web foram projetados para identificar, através de cabeçalhos de tipo de conteúdo MIME, que tipo de conteúdo um fluxo de dados tem, mas não especifique exatamente o que fazer com ele. Isso foi feito por uma boa razão; o autor do site não tem como saber exatamente qual é o tipo de sistema que o usuário final possui ou as preferências do usuário sobre como lidar com diferentes tipos de dados. E algumas maneiras de lidar com dados, como executar automaticamente um arquivo .exe, apresentam riscos de segurança, como vírus e "cavalos de tróia". E se o usuário tiver um Macintosh ou um sistema Unix, executando DOS ou Windows .EXEs é inviável, mesmo assim; mas se você deixar o usuário baixar o arquivo, ele poderá colocá-lo em um disco e executá-lo em um PC no corredor.

Em geral, os usuários podem querer fazer suas próprias escolhas sobre como lidar com vários tipos de arquivos, exibi-los em seu navegador, exibi-los através de um aplicativo auxiliar externo ou salvá-los em seu disco rígido, em vez de permitir que o seu site force um comportamento particular que pode até não funcionar no sistema desse usuário em particular. Então, você deve certificar-se de que seu servidor envia um cabeçalho de tipo de conteúdo honesto e preciso para cada item que ele envia.

Se você estiver enviando arquivos de dados de algum tipo que o usuário deve salvar em vez de visualizar no seu navegador, o melhor tipo de MIME a ser usado é application/octet-stream; Isso geralmente causará uma caixa de diálogo "salvar" para aparecer. Não é "forçado" (um usuário pode configurar o navegador para fazer outra coisa com este tipo de dados), mas é a ação usual, e este é o mais próximo que você pode chegar a "forçar o navegador a salvar o arquivo". Mas você não pode forçar o diretório ou o nome do arquivo em que ele está salvo, embora os navegadores geralmente obtenham o nome da última parte do URL (embora possam variar de maneiras irritantes, às vezes encerrando nomes de arquivos estranhos ao contrário do que você pretendia).

Você sempre pode incentivar o usuário a usar os recursos do navegador para salvar um arquivo no disco, como clicar com o botão direito do mouse em Netscape ou MSIE, que funcionam, independentemente do tipo MIME usado ou do modo como o navegador está configurado para gerenciar esse tipo.

Caixas de diálogo de advertência de supressão

Você pode não gostar de que alguns navegadores exibam "Avisos de Risco de Segurança" quando seu site tenta configurar um cookie, iniciar um applet ou controle ActiveX, passar de páginas seguras (criptografadas) a não seguras e de volta, ou outra atividade que alguns navegadores, Em algumas configurações, avise. Alguns autores não gostam tanto disso que perguntam se há alguma maneira de forçar a incapacidade de tais avisos. Bem, se o autor da Web pode faça isso, isso não venceria o objetivo dessas advertências de possíveis riscos de segurança? Seja real!

"Ocultando" seu código fonte da página

Este é provavelmente o pedido mais comum "Como faço para ..." no newsgroups nos dias de hoje. As pessoas têm uma impressão exagerada do valor de seu código HTML e querem protegê-lo de serem "roubados". Mas não há como ocultar o código-fonte HTML do usuário. O navegador do usuário precisa receber todo o código-fonte HTML para exibir a página, então, não importa quais técnicas desonestráveis o autor usa para obscurecer o código, ele ainda precisa ser analisado pelo navegador e, portanto, não é muito difícil para qualquer usuário intermediário para se tornar algo legível.

Uma das grandes coisas da Web é que os "novatos" podem aprender muito sobre a autoria da Web, observando o código-fonte das páginas. Essa é uma das maneiras que aprendi em primeiro lugar. Ao fazer isso, você verá muitos exemplos (bons e ruins) de técnicas de autoria na Web, que podem ajudá-lo a produzir páginas tão agradáveis quanto as dos profissionais. As lacunas amadores / profissionais e iniciantes / especialistas são muito menores na Web do que em outras mídias, e é talvez por desejo de ampliar essa lacuna que alguns dos "profissionais" querem encontrar uma maneira de ocultar seu código-fonte. Mas ainda não pode ser feito.

Da mesma forma, não há como impedir que ninguém imprima, marque a marcação ou ligue para sua página. Quando você coloca algo na Web, é um jogo justo para tudo isso. Você ainda possui direitos autorais sobre tudo o que você colocou na Web (de acordo com a lei atual, você tem direitos autorais de qualquer coisa que você cria, mesmo que não tenha um aviso de direitos autorais sobre isso) e pode processar alguém que distribua cópias sem sua permissão, mas você não pode parar o uso normal da Web de seus documentos quando eles estão na Web, e isso inclui outros sites fazendo links para sua página. Se você quiser tornar mais difícil as pessoas, acho que você pode continuar movendo suas páginas para que qualquer pessoa que ligue a uma termine com um erro 404 Not Found no dia seguinte, mas isso irritaria seus usuários legítimos pelo menos tanto quanto qualquer pessoa que você acha que está "tirando você".

Algumas das pessoas que perguntam como suprimir o recurso "Ver fonte" não estão fazendo isso para evitar o roubo de seu código, mas porque eles querem manter a segurança de algo em seu código, como uma senha embutida ou outra coisa que poderia ser abusado por "hackers" se eles soubessem disso. Se for esse o caso, você precisa repensar completamente o plano de segurança do seu site. Nada que esteja presente no código enviado para o navegador é seguro de snooping por usuários tentando "piratear" seu site, nem mesmo as coisas que são compiladas em um applet (que pode ser descompilado por vários utilitários). Você precisa mover qualquer aspecto do seu site que exija segurança para o lado do servidor e não para o lado do cliente. O servidor precisa ser onde as senhas são comparadas, o status do usuário e as informações do histórico são mantidas, etc., se você quiser ter certeza de que nada disso é visível ou hackeável pelos usuários finais.

Suprimir cliques e copiar e colar

Isso está intimamente relacionado com o último; Muitas pessoas ignorantes pensam que podem impedir as pessoas de "roubar" o conteúdo do seu site, se colocarem em scripts irritantes que suprimissem os cliques e a cópia de texto. Não, isso não funciona; É trivial desabilitar o JavaScript e, em seguida, os scripts não fazem nada. Tudo o que eles fazem é irritar os usuários normais, que têm muitas coisas perfeitamente razoáveis que eles podem querer fazer com o botão direito do mouse e copiar texto, como abrir links em novas abas ou copiar pequenos trechos para usar (sob a provisão de direitos autorais de uso justo ) em comentários e comentários do site.

Enviando ou não enviando um formulário com ENTER

Isso é inteiramente sob o controle do navegador, não o autor do site. A maioria dos navegadores irá enviar em ENTER se houver exatamente um campo de entrada de texto, e não se houver mais de um. Não há como ignorar isso. (A presença de caixas de seleção e botões de rádio não parece afetar o comportamento do navegador nesta área.)

Esse MSIE "caixa pontilhada"

Uma questão comum nos dias de hoje é "Como desativar a caixa pontilhada que aparece em torno de uma imagem clicável no Microsoft Internet Explorer quando ele é selecionado?" Bem, há uma maneira "kludgy" de desativá-lo, colocando um evento "onFocus" de JavaScript que chama a função "blur ()" para remover o foco do objeto atual; mas há muitos usuários que ficarão irritados se você fizer isso. A caixa pontilhada é um recurso de acessibilidade adicionado pela Microsoft para permitir que o navegador seja usado inteiramente a partir de um teclado sem usar o mouse. Alguns usuários preferem surfar desta maneira, ou têm desvantagens que tornam a navegação baseada em mouse difícil ou impossível. Se você usar o JavaScript para derrotar esse recurso, os usuários que desejam ou precisam navegar pelo teclado serão obrigados a desativar JavaScript para usar seu site.

Mural da Vergonha

Faça o seu site melhor, olhando outros sites que mostram, por exemplo, o que não fazer!

NOTE: A inclusão de um site em meus links do "Hall of Shame" não deve ser interpretada como qualquer tipo de ataque pessoal no criador do site, quem pode ser uma pessoa realmente grande, ou mesmo um ataque no site da Web vinculado como um todo, o que pode ser uma fonte de informações e / ou entretenimento realmente ótimos. Em vez disso, é simplesmente destacar recursos específicos (intencionais ou acidentais) dos sites vinculados que causam problemas que poderiam ter sido evitados por um melhor design. Se você encontrar um dos seus sites está vinculado aqui, não fique ofendido; melhore seu site para que eu tenha que derrubar o link!

  • Este site fez e tentou defender uma política patética de desabilitar copiar e colar via JavaScript ... em 2013, você acreditaria?