This isn't abuse, it's what the storage event was specifically made for. Facebook, Google, etc. have been using this event to update common state information between tabs for quite a while.
The primary caveat with this approach is race conditions due to lack of locking. Note the "Issues" section in <a href="http://www.w3.org/TR/webstorage/" rel="nofollow">http://www.w3.org/TR/webstorage/</a> which says:<p>"""
The use of the storage mutex to avoid race conditions is currently considered by certain implementors to be too high a performance burden, to the point where allowing data corruption is considered preferable. Alternatives that do not require a user-agent-wide per-origin script lock are eagerly sought after. If reviewers have any suggestions, they are urged to send them to the addresses given in the previous section.<p>More details regarding this issue are available in these e-mails (as well as numerous others):<p><a href="http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-September/023059.html" rel="nofollow">http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-Sep...</a>
<a href="http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-December/024277.html" rel="nofollow">http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-Dec...</a>
"""<p>So as long as you don't need transactions/locks across the shared state, this might work. Of course, transactions/locks are often necessary.
If you want to use localStorage atomically, I found this writeup and code on a LockableStorage interface to be very thorough: <a href="http://balpha.de/2012/03/javascript-concurrency-and-locking-the-html5-localstorage/" rel="nofollow">http://balpha.de/2012/03/javascript-concurrency-and-locking-...</a>
This technique does indeed work very well. I wrote about it last year, describing how we use it at FastMail to share a single push events connection between all open tabs: <a href="http://blog.fastmail.fm/2012/11/26/inter-tab-communication-using-local-storage/" rel="nofollow">http://blog.fastmail.fm/2012/11/26/inter-tab-communication-u...</a>
This method may allow message passing between tabs, and windows, but it does not do so between iFrames. Two iFrames on the tab will not trigger storage events on each other.<p>In my opinion this is a bug that should be fixed,<p><a href="https://code.google.com/p/chromium/issues/detail?id=177342" rel="nofollow">https://code.google.com/p/chromium/issues/detail?id=177342</a>
As far as I can tell this does not work cross protocol from http to https. One of the thing I use postMessage for the most is messaging between those two protocols.
I was attempting to do something similar, but needed to support IE7 which doesn't support localStorage. You could probably rely on userData as a fallback though.