One of the goals of easyXDM is to support all browsers that are in common use, and to provide the same features for all. One of the strategies for reaching this is to follow defined standards, plus using feature detection to assure the use of the most efficient one.
Non-standard methods may also be used where appropriate.
The two primary techniques used are
window.postMessage is defined in the draft HTML5 specification, and is currently implemented in all the major browsers.
This is a transport that is specific for IE6 and IE7, and that offers speeds similar to postMessage (if not faster).
Nix relies on the fact that the in IE<8 the window.opener property can be read and written to from both the parent and the child window, meaning that it can be used to transfer proxy methods.
In order to not introduce security risks by leaking context between the windows, a VBScript COM object is created on the fly serving as a proxy.
This technique was originally found in the Apache Shindig project.
Additional techniques available
Fragment Identifier Messaging (FIM)
FIM is one of the oldest and most used methods for cross-domain messaging, and there are several papers on the subject, as well as several ways to implement it.
This technique uses the FIM part of the URL to transfer messages and so has some limitation on length of each message fragment, as well as being vulnerable to ‘dropped’ messages. easyXDM negates these limits by implementing both a fragmenting and queuing mechanism and a mechanism that verifies that messages are received.
Since using FIM is inherently relatively slow due to the fragmenting and verification easyXDM also provides a mechanism using the window.name property. This requires the presence of a special file on both domains, but enables you to reach speeds similar to that of postMessage.
A proper matrix will be created based on the test suite.
For now the library is tested with IE 6, 7, 8, and current versions of Opera, Chrome, Firefox and Safari.
As the library uses feature testing (and not browsersniffing) it is believed that the tests covers the relevant browsers capabilities.
If you know of a browser that does not pass the final test in the test suite, then please leave a comment with the details!