Ho un'ultima soluzione.
Il popup notifica ad un eventuale chiamante di essere pronta a ricevere un comando
codice:
function window_onload() {
	if(opener != undefined)
		if (opener.popup_caricata != undefined)
			opener.popup_caricata = true;
}
una sua funzione è per esempio:
codice:
function mostra_messaggio(messaggio)
{
	alert(messaggio);
}

il chiamante utilizza questo codice
codice:
var w = null;
var popup_caricata = false;
function button1_onclick() {
	w = window.open("b.asp", "popup","left=300,top=300,width=300,height=300,");
	w.focus();
	lancia_mostra_messaggio();
}

function lancia_mostra_messaggio()
{
	mostra_messaggio("Ciao, mondo");
}

function mostra_messaggio(messaggio)
{
	if(	popup_caricata )
	{
		w.mostra_messaggio("Ciao, mondo");
		popup_caricata = false;
	}
	else
	{
		window.setTimeout("lancia_mostra_messaggio()", 1);	
	}
}
funziona con IE6 e NN7. Non so se esistano soluzioni più robuste