A user account is required in order to edit this wiki, but we've had to disable public user registrations due to spam.
To request an account, ask an autoconfirmed user on Chat (such as one of these permanent autoconfirmed members).
RemoteDocumentMessaging: Difference between revisions
No edit summary |
No edit summary |
||
Line 15: | Line 15: | ||
</pre> | </pre> | ||
The <code>connectTo</code> method | The <code>connectTo</code> method opens a message port to a browsing context with name <code>target</code> within the caller's origin (although not necessarily within the caller's unit of related browsing contexts). | ||
==Examples== | ==Examples== | ||
Line 24: | Line 22: | ||
<pre> | <pre> | ||
window.addEventListener(" | window.addEventListener("connect", function(message) { | ||
// message.source is a MessagePort we can use to talk to the remote message, just like in a shared worker. | // message.source is a MessagePort we can use to talk to the remote message, just like in a shared worker. | ||
var remote = message.source; | var remote = message.source; | ||
remote.postMessage(" | remote.postMessage("Welcome!"); | ||
// You can call remote.addEventListener("message", ... ) to continue communicating with the remote window. | // You can call remote.addEventListener("message", ... ) to continue communicating with the remote window. | ||
}, false); | }, false); | ||
Line 42: | Line 36: | ||
<pre> | <pre> | ||
var | var port = window.connectTo("the-listener"); | ||
port.addEventListener("message", function(message) { | |||
if (message.data == " | if (message.data == "Welcome!") | ||
alert("Success!); | alert("Success!); | ||
}, false); | }, false); | ||
port.start(); | |||
</pre> | </pre> | ||
[[Category:Proposals]] | [[Category:Proposals]] |
Revision as of 18:30, 21 June 2013
Overview
This document describes a proposal for discovering and communicating with "remote" documents. In particular, this proposal lets a web page communicate with another document even if the web page does not have a direct script connection to that document.
Use Cases
The user opens the same word processing document hosted by a document editing web site in two different browser windows. The document editing web site wants to ensure that edits in one window a reflected in the other window without needing to round-trip through the server (e.g., because the user is offline). Unfortunately, the documents are in different units of related browsing contexts, which means the two documents cannot form a direct script connection. Using remote document messaging, the two documents can discover each other and update each other about edits performed by the user.
Specification
partial interface Window { MessagePort? connectTo(DOMString target); };
The connectTo
method opens a message port to a browsing context with name target
within the caller's origin (although not necessarily within the caller's unit of related browsing contexts).
Examples
Listener
window.addEventListener("connect", function(message) { // message.source is a MessagePort we can use to talk to the remote message, just like in a shared worker. var remote = message.source; remote.postMessage("Welcome!"); // You can call remote.addEventListener("message", ... ) to continue communicating with the remote window. }, false); // Naming your window makes you discoverable by other documents in your origin. window.name = "the-listener";
Sender
var port = window.connectTo("the-listener"); port.addEventListener("message", function(message) { if (message.data == "Welcome!") alert("Success!); }, false); port.start();