Pergunta

A especificação diz que eu deveria poder usar postMessage() em um objeto de janela. Mozilla diz, eu também deveria ser capaz de fazer isso em uma janela aberta().

No entanto, peguei o exemplo postMessage de Robert Nyman e tentei fazê-lo funcionar através das janelas.No entanto, nem o IE10 nem o Chrome parecem fornecer a função postMessage para uma janela recém-aberta.

var target = … // original declaration
popoutbutton.onclick = function(evt) {
    realWin = window.open(iframeWin.frameElement.src, "window1", "width=600,height=400,status=yes,scrollbars=no,resizable=yes");
    target = realWin;
    target.focus();
};

// …snip…

target.postMessage(myMessage.value, expectorigin); // <-- fails because target.postMessage() is undefined

Estou faltando alguma coisa ou esse recurso simplesmente ainda não existe?

- atualização abaixo -

A visualização do desenvolvedor simplesmente não parece fazer isso.Tentei novamente com a visualização do consumidor.O IE10 (compilação 8250) funciona como esperado.Obrigado pela ajuda!

Foi útil?

Solução

Posso fazê-lo funcionar no Chrome 15.0.874.121, embora no seu exemplo você esteja ligando target.postMessage antes de abrir a janela, embora você tenha ignorado qualquer código originalmente definido target.

Você também pode estar enfrentando o problema de ligar postMessage antes que o conteúdo da nova janela seja carregado (ou pelo menos carregado o suficiente para que o ouvinte de evento seja anexado).Portanto, o evento pode ser disparado quando nada estiver realmente ouvindo.Talvez seja necessário adicionar uma espera neste cenário para garantir que a janela recém-aberta seja carregada.

No Internet Explorer 10 recebo o erro SCRIPT16388:Operação abortada sempre que tento o script - mesmo que espere 10 segundos.

Outras dicas

Existe uma maneira melhor que o postMessage, veja isto:

http://carlosaguayo.posterous.com/html5-localstorage-events-cross-window-messag

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top