<div class="gmail_quote">On Mon, Sep 14, 2009 at 3:06 PM, Ian Hickson <span dir="ltr"><<a href="mailto:ian@hixie.ch">ian@hixie.ch</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">On Mon, 14 Sep 2009, Sidney San Martín wrote:<br>
><br>
> The cross-document messaging API solves a lot of problems and is overall<br>
> an Awesome Thing, but requiring a reference to the target window is<br>
> hugely limiting. When a a window wants to talk to another window and<br>
> didn't create it, there are basically three options:<br>
><br>
> 1. window.open with a window name argument, which is a hack because the target<br>
> window has to reload.<br>
> 2. Comet, which is a horrible hack because a trip to the server is required.<br>
> 3. LocalStorage and storage events, which wasn't designed for anything<br>
> remotely like this.<br>
<br>
</div>4. Open a SharedWorker and send a MessagePort to the other window.<br>
<div class="im"><br>
<br>
> Unless there's a reason to prevent free communication between windows,<br>
> there must be a better solution. I can think of a couple of<br>
> possibilities. The most obvious one would be an API similar to<br>
> postMessage that allows broadcasting of messages to all windows, windows<br>
> by name, and windows by domain. Another one (which I haven't developed<br>
> very far) would be to stick with window.postMessage but provide an API<br>
> to ask for windows. So, I could say, "Can I please have a reference to<br>
> the window named 'x'", or, "...to windows at '<a href="http://example.com" target="_blank">example.com</a>'", or, "...to<br>
> any window who'll give me one". Each window would obviously have to opt<br>
> into this.<br>
><br>
> What do you all think?<br>
<br>
</div>How do you know there's a Window to get a hold of if you don't have a hold<br>
of it already?<br>
<br>
The main reason for Window.postMessage() is communication with iframes<br>
(gadgets), not with other top-level browsing contexts. What's the use case<br>
for the latter?<br></blockquote><div><br></div><div>I assume the use case for this is similar with the use case for storage events which essentially is a broadcast mechanism that's specific to just DOM storage.  So if, for example, you wanted to tell your other windows "hey!  I changed the cookie" then you could do it with a message.  This seems much better than, for example polling.</div>

<div><br></div><div>This could also be useful if you wanted to say "hey, I just navigated to <a href="http://gmail.com">gmail.com</a>.  Do any of you already have the inbox and chat contacts loaded up?".  I suppose there's not much advantage to doing it like this over shared workers since either way you're passing messages, but I also don't see any major downsides to allowing broadcasts.</div>

</div>