O RoBorg está correto, mas eu queria adicionar uma nota lateral.
No IE7 / IE8, quando a Microsoft adicionou Guias ao navegador, eles quebraram uma coisa que causaria estragos no seu JS se você não tomar cuidado.
Imagine este layout de página:
MainPage.html
IframedPage1.html (named "foo")
IframedPage2.html (named "bar")
IframedPage3.html (named "baz")
Agora, no quadro "baz", você clica em um link (sem destino, carrega no quadro "baz") que funciona bem.
Se a página carregada, vamos chamá-la special.html, usa JS para verificar se "it" possui um quadro pai chamado "bar" e retornará true (esperado).
Agora, digamos que a página special.html, quando carregada, verifica o quadro pai (quanto à existência e seu nome, e se for "bar", ele se recarrega no quadro de barras.
if(window.parent && window.parent.name == 'bar'){
window.parent.location = self.location;
}
Por enquanto, tudo bem. Agora vem o bug.
Digamos que, em vez de clicar no link original como de costume, e carregando a página special.html no quadro "baz", você clicou no meio ou optou por abri-la em uma nova guia.
Quando essa nova guia for carregada ( sem quadros-pai! ), O IE entrará em um loop infinito de carregamento de página!porque o IE "copia" a estrutura do quadro em JavaScript, de modo que a nova guia tenha um pai e esse pai tenha o nome "barra".
A boa notícia é que verificando:
if(self == top){
//this returns true!
}
nessa nova guia retorna true e, portanto, você pode testar esta condição ímpar.