Avançar para o conteúdo principal

1º Post - Javascript: Encontrar a janela Mãe no caso de existirem vários Popups

Olá.
Como programador, a minha, ferramenta "mais que tudo", é a Net. Durante os meus alguns anos de programação, tenho verificado que pouco ou quase nada existe, sobre desenvolvimento em "Português de Portugal".

Assim, começo a deixar aqui o meu contributo.
Se alguém estiver interessado em juntar-se a este pequeno projecto, contacte-me, terei todo o gosto em ter ajuda em contribuir ainda um pouco mais.

Agora, vamos ao que interessa:
Num dos meus últimos desenvolvimentos deparei-me com a necessidade de compatibilizar para o máximo de browsers o envio de uma página mãe (com uma ou mais janelas filhas ou child popups) para um endereço especifico enviado pela janela filha (child popup).

Numa situação em que teríamos apenas um popup, poderíamos chamar simplesmente em javascript o comando:

opener.navigate("o nosso url");

Mas neste caso, acontece em certas situações que temos popups abertos a partir de outros popups, ou seja, teríamos que percorrer todas as janelas abertas associadas ao nosso site, e encontrar qual a principal, ou pretendida, para a enviarmos para o endereço em questão.

Dado que a plataforma ASP.NET, por defeito, dá o nome de 'aspnetForm' à Form da principal no nossa página usando uma MasterPage, este seria o nome a procurar. E assim cheguei ao seguinte código:

function findMainForm(startForm) {
var win = startForm;
var doc, form;
do {
doc = win.document;
form = doc.forms[0];
if (form.id == 'aspnetForm') {
return win;
}
else {
win = win.opener;
}
} while (form.id != 'aspnetForm');
}


Esta função será chamada ao invés do objecto da form, por exemplo:

function OpenPopUp(ID) {
findMainForm(window).location = '/urlExemplo?ID=' + ID;
}


É certo que ainda poderemos optimizar um pouco mais este algoritmo, mas por agora serve. :)

BRGDS

Comentários

Mensagens populares deste blogue

PLINQO, porque trabalhar?

Na última semana tive a oportunidade de testar o PLINQO . Este é de facto um dos melhores templates de CodeSmith que já testei. Para quem não sabe, o CodeSmith é uma ferramenta que permite gerar uma panóplia de código automaticamente que, de uma outra forma teríamos de escrever, linha por linha. Ora, juntando a Framework 3.5 e CodeSmith toda a parte de criação de camadas de acesso a dados já se tinha tornado mais fácil. Agora com o PLINQO, as coisas tornaram-se canja! O PLINQO gera toda o acesso a dados usando o LINQ e apetrecha-o com uma serie de novas funcionalidades. O LINQ to SQL é completamente automático, a partir de uma base de dados existente. Bem, melhor do que vos explicar por palavras os pequenos aditivos que o PLINQO trás deico-vos um vídeo muito explicativo do mesmo: Vejam, experimentem, e vão ver que depois de experimentarem, não voltam a escrever nem mais uma linha de acesso a dados! PLINQO Website: http://plinqo.com Codesmith Website: http://www.codesmithtools.com Um