Jump to content
Sir Pereira

Abrir em nova página

Recommended Posts

mjamado

Em teoria, não devias abrir janelas novas; na prática, às vezes, é preciso. Caso não te queiras chatear muito, podes usar o target à mesma, os browsers entendem. Se quiseres mesmo passar a 100% no validador, usas um cheirinho de JS:

function initTargets()
{
    var links = document.getElementsByTagName("a");  
    
    for (var i=0; i<links.length; i++)
        if(links[i].getAttribute("href") &&  links[i].getAttribute("rel"))
            links[i].target = links[i].getAttribute("rel");
}

Basicamente, estás a aumentar a DOM com um novo atributo, target, para onde copias o valor do atributo rel, que é válido em XHTML. Depois, só precisas de preencher esse atributo nos links que quiseres.

<a href="uma_pagina.html" rel="_blank">Uma Página</a>

Como benefício adicional, os spiders dos motores de busca indexam correctamente, visto que o href está correctamente preenchido.

Não te esqueças de chamar aquela função no onload do documento (ou no ready, se estiveres a usar jquery - se estiveres, podes fazer a função doutra maneira mais elegante, tirando partido do Sizzle).


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
brunoais

Só uma pequena nota:

Se usar o for each (... in ...) é bastante mais rápido que o que mostraste.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
mjamado

Só uma pequena nota:

Se usar o for each (... in ...) é bastante mais rápido que o que mostraste.

Não, não é; inclusivamente, vai dar lodo, porque o for..in também itera pelos métodos e propriedades do array.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
brunoais

Não, não é; inclusivamente, vai dar lodo, porque o for..in também itera pelos métodos e propriedades do array.

Vou ter q me queixar ao #$&" que me falou nisto e me mostrou os valores de velocidade para provar q é + rápido.

De qq modo eu falei no for each (.. in ..) e não no for (.. in..)

A construção for each ( in ) não é cross-browser, apesar de estar na especificação ECMA. Não funciona em nenhuma versão do IE, até à data.

Só digo rant.gif


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
mjamado

Vou ter q me queixar ao #$&" que me falou nisto e me mostrou os valores de velocidade para provar q é + rápido.

De qq modo eu falei no for each (.. in ..) e não no for (.. in..)

A construção for each ( in ) não é cross-browser, apesar de estar na especificação ECMA. Não funciona em nenhuma versão do IE, até à data.

E a questão de performance é acessória, a menos que tenhas 20.000 links na página. Seja de que forma for, não, não é mais rápido. Acho que houve uma discussão grande sobre isso no StackOverflow aqui há uns anos... Mas podes testar facilmente, se estiveres para aí virado.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.