diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/notification/index.html | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/zh-cn/web/api/notification/index.html')
-rw-r--r-- | files/zh-cn/web/api/notification/index.html | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/notification/index.html b/files/zh-cn/web/api/notification/index.html new file mode 100644 index 0000000000..f92c528b16 --- /dev/null +++ b/files/zh-cn/web/api/notification/index.html @@ -0,0 +1,264 @@ +--- +title: notification +slug: Web/API/notification +tags: + - API + - 参考 + - 通知 +translation_of: Web/API/Notification +--- +<div>{{APIRef("Web Notifications")}}</div> + +<div>{{AvailableInWorkers}}</div> + +<div>{{securecontext_header}}</div> + +<div></div> + +<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API">Notifications API</a> 的<strong>通知</strong>接口用于向用户配置和显示桌面通知。</p> + +<h2 id="Method_overview" name="Method_overview">构造方法</h2> + +<pre class="notranslate">let notification = new Notification(title, options) +</pre> + +<h3 id="参数">参数</h3> + +<dl> + <dt><code>title</code></dt> + <dd>一定会被显示的通知标题</dd> + <dt><code>options</code> {{optional_inline}}</dt> + <dd>一个被允许用来设置通知的对象。它包含以下属性: + <ul> + <li><code>dir</code> : 文字的方向;它的值可以是 <code>auto(自动)</code>, <code>ltr(从左到右)</code>, or <code>rtl</code>(从右到左)</li> + <li><code>lang</code>: 指定通知中所使用的语言。这个字符串必须在 <a href="http://tools.ietf.org/html/bcp47" title="http://tools.ietf.org/html/bcp47">BCP 47 language tag</a> 文档中是有效的。</li> + <li><code>body</code>: 通知中额外显示的字符串</li> + <li><code>tag</code>: 赋予通知一个ID,以便在必要的时候对通知进行刷新、替换或移除。</li> + <li><code>icon</code>: 一个图片的URL,将被用于显示通知的图标。</li> + </ul> + </dd> +</dl> + +<h2 id="属性">属性</h2> + +<h3 id="静态属性">静态属性</h3> + +<p>这些属性仅在 <code>Notification</code> 对象上有效。</p> + +<dl> + <dt>{{domxref("Notification.permission")}} {{readonlyinline}}</dt> + <dd>一个用于表明当前通知显示授权状态的字符串。可能的值包括:<code>denied</code> (用户拒绝了通知的显示), <code>granted</code> (用户允许了通知的显示), 或 <code>default</code> (因为不知道用户的选择,所以浏览器的行为与 denied 时相同).</dd> +</dl> + +<h3 id="实例属性">实例属性</h3> + +<p>这些属性仅在 <code>Notification</code> 的实例中有效。</p> + +<dl> + <dt>{{domxref("Notification.title")}} {{readonlyinline}} (moz only)</dt> + <dd>在构造方法中指定的 title 参数。</dd> + <dt>{{domxref("Notification.dir")}} {{readonlyinline}}</dt> + <dd>通知的文本显示方向。在构造方法的 options 中指定。</dd> + <dt>{{domxref("Notification.lang")}} {{readonlyinline}}</dt> + <dd>通知的语言。在构造方法的 options 中指定。</dd> + <dt>{{domxref("Notification.body")}} {{readonlyinline}}</dt> + <dd>通知的文本内容。在构造方法的 options 中指定。</dd> + <dt>{{domxref("Notification.tag")}} {{readonlyinline}}</dt> + <dd>通知的 ID。在构造方法的 options 中指定。</dd> + <dt>{{domxref("Notification.icon")}} {{readonlyinline}}</dt> + <dd>通知的图标图片的 URL 地址。在构造方法的 options 中指定。</dd> +</dl> + +<h4 id="事件处理">事件处理</h4> + +<dl> + <dt>{{domxref("Notification.onclick")}}</dt> + <dd>处理 {{event("click")}} 事件的处理。每当用户点击通知时被触发。</dd> + <dt>{{domxref("Notification.onshow")}}</dt> + <dd>处理 {{event("show")}} 事件的处理。当通知显示的时候被触发。</dd> + <dt>{{domxref("Notification.onerror")}}</dt> + <dd>处理 {{event("error")}} 事件的处理。每当通知遇到错误时被触发。</dd> + <dt>{{domxref("Notification.onclose")}}</dt> + <dd>处理 {{event("close")}} 事件的处理。当用户关闭通知时被触发。</dd> +</dl> + +<h2 id="方法">方法</h2> + +<h3 id="静态方法">静态方法</h3> + +<p>这些方法仅在 <code>Notification</code> 对象中有效。</p> + +<dl> + <dt>{{domxref("Notification.requestPermission()")}}</dt> + <dd>用于当前页面向用户申请显示通知的权限。这个方法只能被用户行为调用(比如:onclick 事件),并且不能被其他的方式调用。</dd> +</dl> + +<h3 id="实例方法">实例方法</h3> + +<p>这些方法仅在 <code>Notification</code> 实例或其 <a href="/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain" title="/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain"><code>prototype</code></a> 中有效。</p> + +<dl> + <dt>{{domxref("Notification.close()")}}</dt> + <dd>用于关闭通知。</dd> +</dl> + +<p><code>Notification</code> 对象继承自 {{domxref("EventTarget")}} 接口。</p> + +<p>{{page("/en-US/docs/Web/API/EventTarget","Methods")}}</p> + +<h2 id="Example">Example</h2> + +<p>假定有如下 HTML:</p> + +<pre class="brush: html notranslate"><button onclick="notifyMe()">Notify me!</button></pre> + +<p>接下来发送一条通知:</p> + +<pre class="brush: js notranslate">function notifyMe() { + // 先检查浏览器是否支持 + if (!("Notification" in window)) { + alert("This browser does not support desktop notification"); + } + + // 检查用户是否同意接受通知 + else if (Notification.permission === "granted") { + // If it's okay let's create a notification + var notification = new Notification("Hi there!"); + } + + // 否则我们需要向用户获取权限 + else if (Notification.permission !== "denied") { + Notification.requestPermission().then(function (permission) { + // 如果用户接受权限,我们就可以发起一条消息 + if (permission === "granted") { + var notification = new Notification("Hi there!"); + } + }); + } + + + // 最后,如果执行到这里,说明用户已经拒绝对相关通知进行授权 + // 出于尊重,我们不应该再打扰他们了 +}</pre> + +<h3 id="See_the_live_result">See the live result</h3> + +<p>{{ EmbedLiveSample('Example', '100%', 30) }}</p> + +<h2 id="规范">规范</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">规范</th> + <th scope="col">状态</th> + <th scope="col">备注</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('Web Notifications')}}</td> + <td>{{Spec2('Web Notifications')}}</td> + <td>Initial specification.</td> + </tr> + </tbody> +</table> + +<h2 id="Permissions" name="Permissions">权限</h2> + +<p>当你要在开放 web 应用中使用通知时,请确保将 <code>desktop-notification</code> 权限添加到你的 manifest 文件中。通知可以被用于任何权限级别,hosted 或更高。</p> + +<pre class="default prettyprint prettyprinted notranslate"><code><span class="str">"permissions"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> + </span><span class="str">"desktop-notification"</span><span class="pun">:{}</span><span class="pln"> +</span><span class="pun">}</span></code></pre> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p>{{ CompatibilityTable() }}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>5 {{ property_prefix("webkit") }} (see notes)<br> + 22</td> + <td>4.0 {{ property_prefix("moz") }} (see notes)<br> + 22</td> + <td>{{ CompatNo() }}</td> + <td>25</td> + <td>6 (see notes)</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>Firefox OS</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{ CompatUnknown() }}</td> + <td>4.0 {{ property_prefix("moz") }} (see notes)<br> + 22</td> + <td>1.0.1 {{ property_prefix("moz") }} (see notes)<br> + 1.2</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatNo() }}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Gecko_备忘">Gecko 备忘</h3> + +<ul> + <li>在 Firefox 22 (Firefox OS <1.2) 之前,创建一个新的通知必须使用 {{ domxref("window.navigator.mozNotification","navigator.mozNotification") }} 对象的 <code>createNotification</code> 方法。</li> + <li>在 Firefox 22 (Firefox OS <1.2) 之前,当调用 <code>show</code> 方法时通知才会被显示出来,并且只支持 <code>click</code> 和 <code>close</code> 事件。</li> + <li>Nick Desaulniers 编写了一个 <a href="https://github.com/nickdesaulniers/fxos-irc/blob/master/js/notification.js">Notification shim</a> 以向前和向后兼容各种版本的实现。</li> + <li>在 Firefox OS 有个特别的问题, <a href="https://github.com/nickdesaulniers/fxos-irc/blob/0160cf6c3a2b5c9fe33822aaf6bcba3b7e846da9/my.js#L171">你可以传递一个图标路径</a> 用于通知,但是如果应用被打包了你就不能使用相对路径,比如: <code>/my_icon.png</code>。同样的,你也不能这样用: <code>window.location.origin + "/my_icon.png"</code>,<code>因为 window.location.origin</code> 的值在打包的应用里为 null。 <a href="https://developer.mozilla.org/en-US/Apps/Developing/Manifest#origin">清单来源字段</a> 可以修复这个问题,但是这个方法只在 Firefox OS 1.1+ 版本中有效。不过有个潜在的解决方案可以用于 Firefox OS <1.1 版本,就是 <a href="https://github.com/nickdesaulniers/fxos-irc/blob/0160cf6c3a2b5c9fe33822aaf6bcba3b7e846da9/my.js#L168">传递图标的位于外部服务器的绝对 URL</a> 。这个方案并不理想,如通知要立即显示而没有图标,那么将会请求服务器,但是可以用于所有版本的 Firefox OS。</li> +</ul> + +<h3 id="Chrome_备忘">Chrome 备忘</h3> + +<ul> + <li>在 Chrome 22 版本之前,如果要使用通知需要 <a href="http://www.chromium.org/developers/design-documents/desktop-notifications/api-specification" title="http://www.chromium.org/developers/design-documents/desktop-notifications/api-specification">旧的带前缀版本的规范</a> ,并且使用{{domxref("window.navigator.webkitNotifications","navigator.webkitNotifications")}} 对象创建一个新的通知实例。</li> + <li>在 Chrome 32 版本之前,不支持 {{domxref("Notification.permission")}} 属性。</li> +</ul> + +<h3 id="Safari_备忘">Safari 备忘</h3> + +<ul> + <li>Safari 在 Safari 6 版本开始支持通知,但是只能在 Mac OSX 10.8+ (Mountain Lion) 中使用。</li> +</ul> + +<h2 id="请参见">请参见</h2> + +<ul> + <li><a href="/zh-CN/docs/Web/API/notification/Using_Web_Notifications" title="/zh-CN/docs/Web/API/notification/Using_Web_Notifications">使用 Web Notifications</a></li> + <li><a class="external" href="https://github.com/soapdog/firefoxos-sample-app-image-uploader" title="Firefox OS Image Uploader Sample App">Firefox OS 图片上传器示例 App</a></li> + <li> + <p><a href="https://codepen.io/xgqfrms/pen/vxaQKe">https://codepen.io/xgqfrms/pen/vxaQKe</a></p> + + <p><br> + </p> + </li> +</ul> |