这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
The Client interface of the ServiceWorker API represents the scope of a service worker client. A service worker client is either a document in a browser context or a SharedWorker, which is controlled by an active worker. A client object acts as a snapshot representation of its associated service worker client in the scope of a service worker.
Methods
Client.postMessage()- Allows a service worker to send a message to a
ServiceWorkerClient.
Properties
Client.frameType只读- Indicates the type of browsing context of the current client. This value can be one of
auxiliary,top-level,nested, ornone. Client.id只读- Returns the universally unique identifier of the
Clientobject. Client.url只读- The URL of the current service worker client.
Examples
This code is based on a snippet taken from the service worker post-message sample (see post-message live.) The code sends message data to which the service worker can reply via Client.postMessage().
The message is wrapped in a promise that resolves if the response doesn't contain an error and rejects with the error.
// service worker client (e.g. a document)
function sendMessage(message) {
return new Promise(function(resolve, reject) {
// note that this is the ServiceWorker.postMessage version
navigator.serviceWorker.controller.postMessage(message);
window.serviceWorker.onMessage = function(e) {
resolve(e.data);
};
});
}
// controlling service worker
self.addEventListener("message", function(e) {
// e.source is a client object
e.source.postMessage("Hello! Your message was: " + e.data);
});
Specifications
| Specification | Status | Comment |
|---|---|---|
| Service Workers Client |
Working Draft | Initial definition. |
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Basic support | 40.0[1] | 44.0 (44.0)[2] | 未实现 | ? | 未实现 |
| Feature | Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
| Basic support | ? | 44.0 (44.0) | ? | 未实现 | ? | 未实现 | ? |
- [1] The
frameTypeproperty is not supported in Chrome 43.0. - [2] Service workers (and Push) have been disabled in the Firefox 45 & 52 Extended Support Releases (ESR.)