Há males que vêm por bem.
Já me aconteceu inumeras vezes ao fazer debug do IE 6 (6.0.2900.2180.xpsp_sp2_gdr.070227-2254) usando o "Microsoft Script Editor (10.0)" determinar que o object window.opener não está definido quando deveria estar, nomeadamente no documento carregado dentro de uma Iframe.
A atitude natural e expectável é culpar o browser (IE), pois já faz tanta coisa mal, que é só mais uma. Assim sendo arranja-se uma forma de circundar o problema.
Mas hoje descobri o cálice dourado :)
O culpado desta vez é o debugger "Microsoft Script Editor".
Se o debugger estiver activo durante a execução de uma instrução que envolva window.opener este objecto não está definido (undefined).
Mas se só chamarmos o debugger depois de executar essa linha, ou simplesmente não lançar o debugger, o código com o window.opener executa sem problemas, pois este encontra-se correctamente definido.
O seja, no caso seguinte window.opener não está definido e dá erro, no debugger:
function GiveZipCode( zipC, cityN, streetN )
{
debugger;
window.opener.fillBoxes( zipC, streetN, cityN );
...
}
desta forma o window.opener JÁ ESTÁ CORRECTAMENTE definido e funciona:
function GiveZipCode( zipC, cityN, streetN)
{
window.opener.fillBoxes( zipC, streetN, cityN );
debugger;
...
}
Para os mais incrédulos, basta chamar o debugger dentro da função fillBoxes() que ele para lá dentro, sem qualquer problema, ou seja conseguiu aceder ao window.opener, logo está definido.
quinta-feira, 11 de outubro de 2007
Subscrever:
Enviar feedback (Atom)
Sem comentários:
Enviar um comentário