A fork of jquery-postmessage (cross-domain JS messaging) without jQuery dependencies
JavaScript Shell
Pull request Compare This branch is 5 commits ahead of cowboy:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
LICENSE-MIT changed license to dual mit / gpl, tweaked example Nov 21, 2009


non-jQuery fork by Jeff Lee

I'm a fan of the simple interface of this plugin, but for various reasons I didn't want to be forced to include jQuery. Luckily, the dependencies on jQuery were minimal.

This fork consists of the following changes:

  1. Basic code cleanup and restructuring, for legibility.
  2. The postMessage and receiveMessage functions can be bound arbitrarily, in terms of both function names and object scope. Scope is specified by the the "this" context of NoJQueryPostMessageMixin();
  3. I've removed the check for Opera 9.64, which used $.browser. There were at least three different GitHub users requesting the removal of this "Opera sniff" on the original project's Issues page, so I figured this would be a relatively safe change.
  4. postMessage no longer uses $.param to serialize messages that are not strings. I actually prefer this structure anyway. receiveMessage does not implement a corresponding deserialization step, and as such it seems cleaner and more symmetric to leave both data serialization and deserialization to the client.
  5. The use of $.isFunction is replaced by a functionally-identical check.
  6. The $:nomunge YUI option is no longer necessary.

jQuery postMessage: Cross-domain scripting goodness


Version: 0.5, Last updated: 9/11/2009

jQuery postMessage enables simple and easy window.postMessage communication in browsers that support it (FF3, Safari 4, IE8), while falling back to a document.location.hash communication method for all other browsers (IE6, IE7, Opera).

With the addition of the window.postMessage method, JavaScript finally has a fantastic means for cross-domain frame communication. Unfortunately, this method isn't supported in all browsers. One example where this plugin is useful is when a child Iframe needs to tell its parent that its contents have resized.

Visit the project page for more information and usage examples!




This working example, complete with fully commented code, illustrates one way in which this plugin can be used.


Support and Testing

Information about what version or versions of jQuery this plugin has been tested with and what browsers it has been tested in.

jQuery Versions


Browsers Tested

Internet Explorer 6-8, Firefox 3, Safari 3-4, Chrome, Opera 9.

Release History

0.5 - (9/11/2009) Improved cache-busting 0.4 - (8/25/2009) Initial release


Copyright (c) 2009 "Cowboy" Ben Alman Dual licensed under the MIT and GPL licenses. http://benalman.com/about/license/