Arquivo da tag: browser

User Agent do Internet Explorer 11 muda e quebra um monte de projetos

internet-explorer-stopped-working
Fala galerinha…. Estou sumido a muito tempo aqui do blog… Vou tentar voltar a postar coisas… Serão posts curtos e objetivos, então qualquer dúvida pode me procurar nos comentários… (Preciso arrumar um tempo pra limpar esse layout horroso) :p :p

Hoje, após algumas reclamações de usuários, descobri que o IE 11 mudou seu user agent, e isso quebra vários javascripts.

Verifique o seu projeto e veja se não foi impactado.

Antes um user agent, por exemplo do IE 10 vinha assim:
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)

Então no seu javascript, para verificar se o navegador era IE, você pega o user agent e procura pela string MSIE. Provavelmente era um código assim:
this.navigator.userAgent().match(/MSIE\s([\d]+)/);

Com o novo e belíssimo IE 11, além de bonito e rápido, ele não podia perder a reputação e continuar uma droga… O user agent mudou para:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

Com isso seu belíssimo javascript retorna que você não está no IE e sua aplicação se comporta de forma completamente diferente.

Para resolver isso, após muita muita pesquisa, forums, stack overflows, confesso que vi soluções que davam vontade de chorar… Então resolvi juntar um pedacinho de cada, e cheguei na seguinte solução:

1
2
3
4
5
6
7
8
9
10
function isIE() {
 return (
  (this.navigator.appName() == 'Microsoft Internet Explorer') ||
  this.navigator.userAgent().match(/MSIE\s([\d]+)/) ||
  (
   (this.navigator.appName() == 'Netscape') &&
   (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(this.navigator.userAgent()) != null)
  )
 );
}

Assim eu consigo fazer 3 verificações antes de dizer que não é IE. Se o navegador se chama “Internet Explorer”, se ele tem uma versão válida de MSIE ou se ele é um Netscape com alguma versão de Trident.

Já estou rodando esse código em produção e o problema foi solucionado. Espero que sirva para mais alguém…

Share

5 bons motivos para você não perder tempo com travian ou outro jogo web browser

Estou para escrever este post há muito tempo, desde que parei de jogar travian.

Joguei travian por mais de 4 anos… Comecei em 2005 em servidores americanos, depois fui pros BRs da vida e joguei até meados de 2010…

Fui general de ataque, de defesa, lider de aliança TOP 3 (nunca fui lider de aliança top 1 =/), já cuidei de WW (como sitter), já fui dono de WW, ja tive 500 mil soldados mortos num ataque suicida, ja gastei muito dinheiro pra usar os bonus do travian, ja coloquei despertador pra acordar de madrugada e construir algo, e por ai vai…

Como podem ver, minha experiência com o travian foi muito grande, e lá no jogo eu fiz amigos na qual eu converso até hoje pelo msn/facebook…

Porém, é um jogo que deixa um certo vício, e o que você ganha de um lado, você perde de outro…

Perco as contas de quantas festas, encontros com amigos, futebol, passeios, e até natais em familia eu perdi pra jogar travian, isso sem falar do dinheiro e tempo investido…

Em 2011 eu tentei voltar pro travian, e me deparei com a nova versão (que até então não conhecia), onde o seu herói fazia uma espécie de “missões”…

Por isso eu resolvi publicar alguns motivos bem destacado e explicado para convencer alguns jogadores a mudar sua forma de pensar com relação a esse e outros jogos do mesmo estilo (ikariam, thecrims, imperiaonline, bitefight e por ai vai…)

Vamos lá:

1˚ motivo: Perda de dinheiro

Escolhi começar por este ponto, que pra mim foi o mais marcante… Eu gastava as vezes mais de R$ 100,00 por mês comprando ouro para poder investir na minha conta.

O que muitas pessoas não sabem, é que o objetivo de todos esses jogos online é arrecadar dinheiro… Você achou um jogo muito legal ? É divertido e emocionante ? E ainda é de graça ?? Até pode ser, mas dá uma verificada se não tem a opção de comprar alguma coisa, como ouro por exemplo, para acelerar uma construção ou aumentar seu poder de ataque.

Pra você ter uma ideia… Existe uma plataforma de pagamentos online, para os jogadores do colheita feliz poderem comprar créditos: http://exame.abril.com.br/tecnologia/noticias/criadora-do-jogo-colheita-feliz-lanca-plataforma-de-pagamento-online

No caso do travian, a corrida para crescer a conta logo no inicio do servidor é muito grande… Usei muitas vezes construir imediatamente, bonus de ataque, bonus de defesa, troca npc no mercado e por aí vai…

Agora você já sabe… Todos esses jogos “gratuitos” estão aí para proporcionar muito divertimento e com isso gerar muita ansiedade… Porque esperar muito tempo para passar de nível, produzir mais, crescer sua vila, se você pode comprar algumas moedas (ouro do jogo) e subir “mais rapidamente”… Depois isso vira um vício, e usar dinheiro no jogo passa a ser “essencial”.

2˚ motivo: Perda de tempo

Esse é um ponto muito bom também… Você que ainda joga travian e está lendo isso, já colocou um despertador para acordar de madrugada e construir alguma coisa ??

Eu sei que hoje em dia tem scripts (eu até já postei muita coisa sobre isso), só que antigamente os scripts não eram tão populares, então tinhamos que acordar de madrugada para fazer algumas coisas, ou desviar as tropas de um ataque forte…

O problema não é só as madrugadas não… Quantos sabados eu perdi jogando travian, já passei o natal jogando travian. Como em epocas de natal e ano novo acontece uma trégua no jogo, os jogadores “mais espertos” costumam aproveitar esse tempo e crescer ainda mais as suas vilas…

Agora, no caso do travian, the crims, ou seja, esses jogos onde o servidor é reiniciado de tempos em tempos, é a perda de tempo total !! Você já parou pra pensar que se mata jogando travian, dá quase a sua vida pelo jogo (tem até gente que as vezes acha que é real) e depois de uns 6 meses o servidor é resetado e tudo começa DE NOVO !! Isso mesmo… Joga seu esforço no lixo e começa de novo !!

3˚ motivo: Influência na sua vida pessoal

Este ponto está diretamente ligado ao anterior… Mas preferi tratar como um ponto separado…

Eu jogava travian todo sábado, domingo e feriados… Depois que consegui um telefone com internet, ai as coisas melhoraram… Eu passei a jogar também nos momentos onde eu estaria fora de casa…

Vida pessoal ?? O que é isso ? Pra que amigos se eu sou o lider geral de uma aliança e estou mandando em 500 jogadores ?

Era assim que eu via algumas pessoas agirem, e por muitas vezes eu me pegava fazendo isso… “Ir pra praia ?? Logo hoje que iram liberar os monumentos no travian… Não posso perder essa chance…”

4˚ motivo: Vício no jogo

Acredito que a esta altura você já esteja imaginando que vício pelo jogo são todos os pontos anteriors somados…

Mas ainda pode piorar…

Primeiro vamos ver o que significa vício:
Vício (do latim “vitium”, que significa “falha ou defeito”) é uma tendência habitual para certo mal, sendo oposto à virtude. 

Ou seja, vício é uma coisa que te faz mal, ou que te prejudica… E era isso que estava acontecendo… Matar aulas na faculdade estava sendo frequentes para poder me concentrar no jogo… Ficava horas no laborátorio usando o computador para tentar salvar uma aldeia de um ataque ou capturar a aldeia de alguém…

Eu estava prejudicando meus estudos com esse vício… Será que o jogo é tão bom que vale esse sacrifício ??

5˚ motivo: Sacrifícios em Vão

Isso mesmo… Como último ponto, tudo isso é em vão…

De uns anos pra cá, começou a surgir scripts milagrosos onde você pode fazer uma fila de construção, desviar tropas automaticamente, baby sitter que joga pra você…

Então acordar de madrugada não fazia mais sentido, pois eu estaria me sacrificando para jogar honestamente enquanto gente por ai estava investindo em scripts que são muito mais eficientes…

Agora com as novas versões do travian, alguns scripts vem sido detectados e o jogo tem melhorado quanto a isso. Mas junto com essas novas versões, vem piorado por outro lado.

Logo logo, se já não tiver acontecendo, você poderá usar ouro para comprar itens para seu heroi… Durante muito tempo os beneficios pra que usava dinheiro no jogo vinha sendo pequenos… Só que agora, jogar usando dinheiro pra quem quer ser bem sucedido tem sido quase que uma obrigação.

Foi por esse mesmo motivo que eu parei de jogar GunBound, porque o pessoal com dinheiro investia pesado no jogo e quem jogava sem gastar nada não tinha chances…

Quer fazer um teste ?? Experimente jogar travian sem usar scripts e sem usar dinheiro, sem acordar de madrugada, sem sacrificar a faculdade, e sem se ausentar para sua familia e seus amigos… Sabe o que vai acontecer ?? Sua aldeia não vai crescer, não terá tropas para defender a aldeia, e dentro de alguns dias, alguem vai começar a te atacar, roubar seus recursos, e com isso não vai mais conseguir jogar…

Então fica fácil de fazer a conta… Sem vício = Sem jogo !

Sei que vai ter gente comentando aqui que joga travian, não é viciado e não gasta dinheiro, mas eu tenho certeza absoluta que não é um jogador forte, e que provavelmente está sendo atacado.

O ponto que eu estou querendo colocar aqui, é que por mais que não seja um vício, o tempo que você gasta no travian poderia ser investido em outra coisa (leitura de um livro, esporte, ou até mesmo em um jogo, mas que seja um que não tenha a opcão de ‘gastar dinheiro loucamente’, exemplo: Civilization, GTA ou os mais simples WAR online, xadrez, etc… )…

Apesar de qualquer jogo ser perda de tempo, você jogando Civilization, Call of Duty, etc… você vai estar se divertindo, jogando online, com jogadores que não estão usando dinheiro para ser melhor que você e nem estão roubando (ou ao menos não deveriam, rs). Mesmo assim ainda voto em ler um livro, aprender algo no computador, estudar, etc…

Foi pensando nisso que eu vendi meu XBox, ainda sinto falta dele. Foi uma decisão muito difícil, mas tenho tido mais tempo para aprender coisas novas e para meu lazer (por exemplo, estou começando a entrar na área de Aeromodelos, com helicopteros elétricos, assunto para uma outra ocasião…)

Bom, espero ter conseguido compatilhar bem minha experiência e minha opnião sobre o assunto. Se um dia eu consegui, espero que você, jogador de travian, consiga escapar disso também. =)

Não deixe de comentar… Adoraria ler o que você pensa a respeito disso…

Share

HTML5: Trocando mensagens entre a página e iframes

Por questões de segurança e privacidade, os navegadores impedem que haja comunicação entre os conteúdo de diferentes domínios. Ou seja, scripts em diferentes dominios (cross-domain) não podem se interagir.

Na prática seria assim… Já imaginou, se um simples anúncio do google adsense, pudesse controlar a página em que ele foi colocado ? Ele iria alterar o background, trocar titulos na página e bagunçar tudo.

Por isso essa é uma importante funcionalidade nos navegadores, pois evita com que páginas desconhecidas (em domínio diferente) de controlar a página atual em que está visitando.

Com o HTML5, podemos contornar esse problema facilmente. Utilizando o Cross-document messaging, podemos estabelecer comunicação entre páginas e documentos no html, sem se procupar com a origem do domínio. Foi desenvolvido justamente para permitir essa comunicação, sem colocar em risco a segurança da página. (cross-site scripting attacks).

Cross-site messaging funciona apenas no HTML5, e está disponível nas seguintes versões de navegadores:

  • Internet Explorer 8.0+
  • Firefox 3.0+
  • Safari 4.0+
  • Google Chrome 1.0+
  • Opera 9.5+

Vejamos então um exemplo prático:

Digamos que em sua página inicial, você tem o seguinte iframe.

1
<iframe id="exemplo-iframe" src="http://www.exemplo.com/teste.html"></iframe>

Se você quiser mandar o titulo do seu site para o iframe, você precisa usar o cross-document messaging pois ele está em um outro domínio. Veja abaixo como você faria para disparar essa mensagem:

1
2
3
4
<script language="javascript">
var iframe = document.getElementById("exemplo-iframe").contentWindow;
iframe.postMessage("Titulo do Site", "*"); 
</script>

Na linha 2 é onde obtemos o controle do iframe. Na linha 3 é onde disparamos a mensagem. Note que estamos passando um “*” como segundo argumento do postMessage, o que significa que a mensagem é enviada para todos os domínios. Poderiamos ser mais específicos e disparar apenas para o domínio do iframe (exemplo.com).

Agora, no lado do iframe, só falta receber essa mensagem. Veja abaixo o exemplo do código que o iframe deve carregar:

1
2
3
4
5
6
7
8
<script language="javascript">
function displayMessage(event) {
    var message = event.data;
    alert(message);
    event.source.postMessage("Recebido com sucesso!",  "*");
}
window.addEventListener("message", displayMessage, false);
</script>

Vou começar explicando pela linha 7,  onde é estabelecido o listener, que é responsável por “escutar” as mensagens recebidas e chamar a função displayMessage. Na linha 3, recebemos a mensagem numa variável. Na linha 4 exibimos ela no alert do javascript. Na linha 5, é disparado uma mensagem para o “remetente”, ou seja, podemos enviar uma mensagem para confirmar o recebimento por exemplo.

Lembrando que para que a mensagem enviada na linha 5 seja recebida corretamente pela sua página inicial, você tem que adicionar um listener, da mesma forma que foi feito no iframe. Fazendo assim, é possível fazer trocas de informações entre as páginas de diferentes domínios.

No exemplo acima, qualquer site estaria habilitado em trocar informações com aquela página do iframe (http://www.exemplo.com/teste.html) e dependendo do contexto e de como foi implementado, pode vir a ser uma falha de segurança, portanto, utilize com cuidado.

Share

Liberdade aos desenvolvedores: Atualize seu Navegador

 

http://www.atualizeseunavegador.net/
http://www.atualizeseunavegador.net/ | http://www.updateyourbrowser.net/

 

Navengando um pouquinho em blogs de amigos, encontrei o AtualizeSeuNavegador.net. O site informa ao usuário diversos pontos ruins ao utilizar um navegador desatualizado !

Mas especificamente, o site foi feito para os usuários do Internet Explorer 6 atualizar seus navegadores ! Para explicar melhor, eis o trecho retirado do site:

Navegadores antigos como o Internet Explorer 6 (lançado em 2001) não exibem sites dentro dos padrões web, são repletos de bugs, não oferecem as funcionalidades dos browsers atuais como navegação por abas ou gerenciador de downloads e estão submetidos a sérios problemas de segurança como vírus e malware.

Ainda comprometem a qualidade da exibição de sites e limitam a criação de desenvolvedores, que precisam perder tempo adaptando o site para rodar nesses navegadores obsoletos.

De acordo com as estatísticas do meu blog, os usuários de IE6 correpondem a 20% das visitas, seguido de IE7: 16%, IE8: 5%, Firefox: 55% e Outros: 14%.

Como o IE6 está fora dos padrões web, ao fazer um site qualquer, há uma certa preocupação no lado do desenvolvedor em adaptar o site para ser compatível com o IE6. Se você reparar com atenção, verá que o tema do seu blog possui um css específico para o IE6.

Para o usuário final, isso não faz a menor diferença (com exceção das falhas de segurança), mas para o desenvolvedor isso é uma limitação, uma “dor de cabeça”, que pode ser eliminada !

Ajude a divulgar a idéia do Atualize seu navegador, e vamos rapidamente acabar com o Internet Explorer 6 ! (Liberdade aos Desenvolvedores 🙂 )

Para fazer parte desse movimento basta inserir o código javascript abaixo, assim quando um usuário IE6 entrar no seu site, vai aparecer a seguinte barrinha:

updateyourbrowser-exemplo

Insira o código da barrinha dentro do <head> do seu site:

<script type="text/javascript" src="http://updateyourbrowser.net/asn.js"> </script>

Ou se preferir, insira o código do banner em seu site ou blog:

<a href="http://updateyourbrowser.net/" title="Atualize seu
Navegador"><img src="http://updateyourbrowser.net/asn.jpg"
border="0" alt="Atualize seu Navegador" /></a>

Atualize seu NavegadorBom, para mais informações visite:

http://www.updateyourbrowser.net/ ou http://www.atualizeseunavegador.net/

 

Querem uma dica ? Instalem o navegador Firefox ! Seguro, rápido e simples ! Ainda mais agora com a nova versão 3.5, ainda mais rápido ! Aproveite 🙂

Share