diff options
Diffstat (limited to 'files/zh-tw/webapi/web_activities/index.html')
-rw-r--r-- | files/zh-tw/webapi/web_activities/index.html | 415 |
1 files changed, 415 insertions, 0 deletions
diff --git a/files/zh-tw/webapi/web_activities/index.html b/files/zh-tw/webapi/web_activities/index.html new file mode 100644 index 0000000000..6c71c46bd8 --- /dev/null +++ b/files/zh-tw/webapi/web_activities/index.html @@ -0,0 +1,415 @@ +--- +title: Web Activities +slug: WebAPI/Web_Activities +translation_of: Archive/B2G_OS/API/Web_Activities +--- +<p>{{ non-standard_header() }}</p> +<p>{{B2GOnlyHeader2('installed')}}</p> +<h2 id="摘要">摘要</h2> +<p>Web Activities 即定義「App 將 Activity 委託 (Delegate) 予另一個 App (往往是由使用者所選擇)」的方法。</p> +<p>Web Activities 目前僅能用於 Firefox OS 上,而完整規格可<a href="https://wiki.mozilla.org/WebAPI/WebActivities" title="https://wiki.mozilla.org/WebAPI/WebActivities">參閱 WikiMo</a>。</p> +<h2 id="Activity">Activity</h2> +<p>所謂「Activity」就是使用者想做的事情,如選取影像、傳送電子郵件等。App 開發者可能會定義某個 App 去處理該 Activity,或定義某個 App 委託予 Activity。</p> +<h2 id="將_App_註冊為_Activity_handler">將 App 註冊為 Activity handler</h2> +<p>App 開發者可建構 App 以處理單或多個 Activity。也就是說,這個 App 可經由其他 App 呼叫之後,而執行 Activity 所定義的某些特定動作。舉例來說,我們可能用其他 App 呼叫相片管理 App,進而選取相片。若 App 是作為 Activity Handler,就會成為其他 App 作業流程的一部分。</p> +<h3 id="註冊_Activity">註冊 Activity</h3> +<p>如果要將 App 註冊為 Activity Handler,目前唯一方法就是到 App 的 manifest 檔案中宣告。</p> +<div class="note"> + <p><strong>注意:</strong>任何 App 均可針對現有的 Activity,將本身註冊為 Activity Handler;亦可建立自己的 Activity。不論是哪種情況,對 manifest 檔案的處理方式都相同。但若要建立新的 Activity,最好是在新 Activity 名稱的前方加上網址 (例如 <em>example.org/myActivity </em>或 <em>org.example.myActivity</em>),以避免發生衝突。</p> +</div> +<h4 id="App_manifest_(亦所謂的宣告註冊)">App manifest (亦所謂的宣告註冊)</h4> +<p>如同下列範例所示,必須透過 <a href="https://developer.mozilla.org/en-US/docs/Apps/Manifest" title="/en-US/docs/Apps/Manifest">App 的 manifest 檔案</a>,宣告 App 將會處理 Activity:</p> +<pre class="brush: js">{ + // Other App Manifest related stuff + + // Activity registration + "activities": { + + // The name of the activity to handle (here "pick") + "pick": { + "href": "./pick.html", + "disposition": "inline", + "filters": { + "type": ["image/*","image/jpeg","image/png"] + }, + "returnValue": true + } + } +} +</pre> +<h4 id="動態註冊">動態註冊</h4> +<p>透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator" title="/en-US/docs/Web/API/window.navigator"><code>navigator</code></a> 物件,即可讓 App 動態的註冊自己。但目前尚未提供此 API。可留意 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775181">bug 775181</a> 以持續追蹤此 API。</p> +<h4 id="Activity_Handler_說明">Activity Handler 說明</h4> +<dl> + <dt> + <code>href</code></dt> + <dd> + 當其他 App 或網頁所啟動的 Activity,同樣也受到此 App 所支援時,則只要選定此 App 執行 Activity,則 <code>href 將指定所應開啟的網頁。另可透過 disposition</code> 屬性指定網頁的開啟方式。 + <div class="note"> + <strong>注意:</strong>此頁面的 URL 將受到<a href="https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript" title="/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript">同源規範 (Same-origin policy)</a> 的限制。</div> + </dd> +</dl> +<dl> + <dt> + <code>disposition</code> {{optional_inline()}}</dt> +</dl> +<dl> + <dd> + 在開始 Activity 時,指定「<code>href</code> 所指定的頁面」呈現方式。其值必為下列之一 (若略過不設定,則預設為 <code>window</code>): + <ul> + <li><strong><code>window</code></strong> ─ 只要是處理 Activity 的頁面,均將以新視窗開啟之;若在行動裝置上,則是以此畫面取代「請求該 Activity 的原始 App」。頁面必須針對自己所支援的各個 Activity,呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozSetMessageHandler" title="/en-US/docs/Web/API/window.navigator.mozSetMessageHandler"><code>navigator.mozSetMessageHandler()</code></a>,再執行「接收到訊息」的Activity。</li> + <li><strong><code>inline</code></strong> ─ 將以覆蓋原頁面的方式,開啟「處理 Activity 的頁面」;若在行動裝置上,則會在「請求該 Activity 的原始 App」上彈出框。如果 <code>disposition</code> 同樣是 <code>window</code>,則後續動作將一模一樣。</li> + </ul> + </dd> +</dl> +<dl> + <dt> + <code>returnValue</code> {{optional_inline()}}</dt> + <dd> + 表示 Activity 是否將回傳數值。如果 App 不回傳數值,則一旦選定 App,UA 隨即傳送 + <i> + success</i> + 事件。如果要回傳數值,那只要 Activity 成功,Activity Handler 會呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postResult" title="/en-US/docs/Web/API/MozActivityRequestHandler.postResult"><code>MozActivityRequestHandler.postResult()</code></a>;反之則呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postError" title="/en-US/docs/Web/API/MozActivityRequestHandler.postError"><code>MozActivityRequestHandler.postError()</code></a>。此處 Activity Handler 中,將於 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozSetMessageHandler" title="/en-US/docs/Web/API/window.navigator.mozSetMessageHandler"><code>mozSetMessageHandler</code></a> 指定第一引數的類型,其實就是 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler" title="/en-US/docs/Web/API/MozActivityRequestHandler"><code>MozActivityRequestHandler</code></a>。在事件處理器呼叫了 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postResult" title="/en-US/docs/Web/API/MozActivityRequestHandler.postResult"><code>postResult</code></a> 或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postError" title="/en-US/docs/Web/API/MozActivityRequestHandler.postError"><code>postError</code></a> 之後,將分別觸發 <em>success</em> 或 <em>error</em> 事件。</dd> +</dl> +<dl> + <dt> + <code>filters</code> {{optional_inline()}}</dt> + <dd> + 此 Dictionary 收錄了「用以指定篩選器 (Filter)」的各個屬性。在確認 App 是否適合處理目前 Activity 時,就會套用這些篩選器。篩選器名稱可為任何形式的文字,但需對應 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions" title="/en-US/docs/Web/API/MozActivityOptions"><code>MozActivityOptions</code></a> 的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>data</code></a> 屬性名稱。篩選器的值可能為基本數值 (數字或字串)、基本數值構成的陣列,或篩選器的定義物件。任一 Activity 必須先滿足所有篩選器之後,才會決定是否要處理其他 Activity。</dd> +</dl> +<p>根據各個篩選器數值的不同,處理篩選器的方式也有所差異:</p> +<ul> + <li>如果篩選器為基本數值,則可選填相對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性。但若屬性已存在,則必須與篩選器所具備的數值相同。</li> + <li>如果篩選器數值為基本數值構成的陣列,則可選填相對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性。但若屬性已存在,則必須與篩選器所具備的數值陣列之一相同。</li> + <li>如果篩選器數值為篩選器定義物件,則相對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性只要遵守物件所定義的規範,即可滿足篩選器。篩選器定義物件可為下列屬性: + <ul> + <li><code>required</code>:此 Boolean 值將指出對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性,必為存在 (<code>true</code>) 或不存在 (<code>false</code>)。</li> + <li><code>value</code>: <code>:基本數值或基本數值構成的陣列。相對應的</code> <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性值,必須與篩選器中定義的數值之一相同。</li> + <li><code>min</code><code>:如果所需的數值為數字,則相對應的 </code><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性值必須大於或等於該值。</li> + <li><code>max</code><code>:如果所需的數值為數字,則相對應的 </code><a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性值必須小於或等於該值。</li> + <li><code>pattern</code><code>:</code><code>字串形式必須遵照</code> <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions" title="/en-US/docs/JavaScript/Guide/Regular_Expressions">JavaScript 正規表示式 (Regular expression)</a> 語法。相對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data"><code>MozActivityOptions.data</code></a> 屬性值必須符合該形式。<strong>從</strong><strong> Firefox OS v1.2 </strong><strong>起即支援此屬性</strong><strong>。</strong></li> + <li><code>patternFlag</code>:若使用了 <code>pattern</code> 屬性,則必須透過此屬性提供某些額外的正規表示式旗標 (如 <code>i</code> 或 <code>g</code>)。<strong>從</strong><strong> Firefox OS v1.2 </strong><strong>起即支援此屬性</strong><strong>。</strong></li> + <li><code>regexp</code>:此字串包含的正規表示式內容,均遵循 <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions" title="/en-US/docs/JavaScript/Guide/Regular_Expressions">JavaScript 正規表示式</a>的語法。其對應的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="The data property returns an arbitrary object representing any data passed with the activity."><code>MozActivityOptions.data</code></a> 屬性值必須符合該樣式。與上方的 <code>pattern 欄位</code>相較,<code>regexp可以只針對字串中間的部分值做比對</code>;因此若要比對字串頭與字串尾,就必須使用 metacharacters 的「^」與「$」分別,即可與 <code>patternFlag </code>一樣進行完全比對。<strong>目前僅限</strong><strong> Firefox OS v1.0 </strong><strong>與</strong><strong> v1.1 </strong><strong>支援此屬性。</strong>因此建議同時使用 <code>pattern</code> 與 <code>regexp</code>。</li> + </ul> + </li> +</ul> +<h2 id="處理_Activity">處理 Activity</h2> +<p>一旦把 App 宣告為 Activity Handler 之後,我們就必須在實作中處理其他 App 所傳來的 Activity 請求。</p> +<p>若要處理 Activity,就必須註冊「執行所有必要動作」的函式。先透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozSetMessageHandler" title="/en-US/docs/Web/API/window.navigator.mozSetMessageHandler"><code>navigator.mozSetMessageHandler()</code></a> 來設定訊息處理器 (Message handler),並特別指派至「<code>activity」訊息</code> (不能為 Activity 的名稱)。接著將傳入 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler" title="/en-US/docs/Web/API/MozActivityRequestHandler"><code>MozActivityRequestHandler</code></a> 物件,以作為 Activity Handler 函式的參數。</p> +<pre class="brush: js">navigator.mozSetMessageHandler('activity', function(activityRequest) { + // Do something to handle the activity +});</pre> +<p>在 Activity Handler 函式執行動作時,將透過 Activity 請求而檢索 Activity 的相關資訊,並依需要而回傳答案。</p> +<p>另外,呼叫 Activity 的 App 必須提供某些資料 (請參閱下表)。而透過請求的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.source" title="/en-US/docs/Web/API/MozActivityRequestHandler.source">source</a> 屬性 (亦為 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions" title="/en-US/docs/Web/API/MozActivityOptions">MozActivityOptions</a> 物件) 即可取得這些資料。該物件將提供 Activity 呼叫的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.name" title="/en-US/docs/Web/API/MozActivityOptions.name">name</a> 與相關 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityOptions.data" title="/en-US/docs/Web/API/MozActivityOptions.data">data</a>。</p> +<pre class="brush: js">navigator.mozSetMessageHandler('activity', function(activityRequest) { + var option = activityRequest.source; + + if (option.name === "pick") { + // Do something to handle the activity + } +});</pre> +<p>一旦執行所有動作以處理 Activity 之後,我們就可以呼叫請求的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postResult" title="/en-US/docs/Web/API/MozActivityRequestHandler.postResult">postResult()</a> 函式,針對委託該 Activity 的 App,回傳所需的結果。</p> +<p>如果發生錯誤,則可呼叫請求的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postError" title="/en-US/docs/Web/API/MozActivityRequestHandler.postError">postError()</a> 函式,以回傳該 Activity 的錯誤訊息。</p> +<pre class="brush: js">navigator.mozSetMessageHandler('activity', function(activityRequest) { + var option = activityRequest.source; + + if (option.name === "pick") { + // Do something to handle the activity + ... + + // Send back the result + if (picture) { + activityRequest.postResult(picture); + } else { + activityRequest.postError("Unable to provide a picture"); + } + } +});</pre> +<div class="note"> + <p><strong>注意:</strong>如果並未呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postError" title="/en-US/docs/Web/API/MozActivityRequestHandler.postError"><code>postError</code></a> 或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivityRequestHandler.postResult" title="/en-US/docs/Web/API/MozActivityRequestHandler.postResult"><code>postResult()</code></a>,則均應由 UA 送出錯誤訊息;例如使用者離開了 App (關閉桌面上的分頁,或回到行動裝置的首頁) 的情形。</p> +</div> +<h2 id="開始_Activity">開始 Activity</h2> +<p>就 <em>Web Activities</em> 的另一方面來說,就是有 App 會將 Activity 委託予我們的 App。若要執行這種委託作業,則 App 必須建立 (Instantiate) <a href="https://developer.mozilla.org/en-US/docs/Web/API/MozActivity" title="/en-US/docs/Web/API/MozActivity"><code>MozActivity</code></a> 物件,進而呼叫 Activity。這種物件其實就是 <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRequest" title="/en-US/docs/Web/API/DOMRequest"><code>DOMRequest</code></a> 物件,可等待來自於 Activity Handler 的任何反應。只要建立了物件之後,就會開始 Activity (也會立刻為使用者顯示 UI)。</p> +<pre class="brush: js" id=".C2.A0">var activity = new MozActivity({ + // Ask for the "pick" activity + name: "pick", + + // Provide de data required by the filters of the activity + data: { + type: "image/jpeg" + } +}); + +activity.onsuccess = function() { + var picture = this.result; + console.log("A picture has been retrieve"); +}; + +activity.onerror = function() { + console.log(this.error); +}; +</pre> +<h3 id="Firefox_OS_的_Activity">Firefox OS 的 Activity</h3> +<p><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia">Gaia</a> 即為 Firefox OS 的原生介面,並已內建許多 App 以定義基本的 Activity。這些 Activity 如下:</p> +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Application</th> + <th scope="col">Expected Data (filters)</th> + <th scope="col">Comments</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>browse</code></td> + <td>Gallery</td> + <td> + <pre class="brush: js"> +type: "photos"</pre> + </td> + <td> </td> + </tr> + <tr> + <td><code>configure</code></td> + <td>Settings</td> + <td> + <pre class="brush: js"> +target: "device"</pre> + </td> + <td> </td> + </tr> + <tr> + <td><code>costcontrol/balance</code></td> + <td>Costcontrol</td> + <td>None</td> + <td> </td> + </tr> + <tr> + <td><code>costcontrol/data_usage</code></td> + <td>Costcontrol</td> + <td>None</td> + <td> </td> + </tr> + <tr> + <td><code>costcontrol/telephony</code></td> + <td>Costcontrol</td> + <td>None</td> + <td> </td> + </tr> + <tr> + <td><code>dial</code></td> + <td>Communication</td> + <td> + <pre class="brush: js"> +type: "webtelephony/number", +number: { + regexp:/^[\\d\\s+#*().-]{0,50}$/ +}</pre> + </td> + <td>當 App 要傳送一通電話時使用。</td> + </tr> + <tr> + <td colspan="1" rowspan="3"><code>new</code></td> + <td>Communication</td> + <td> + <pre class="brush: js"> +type: "webcontacts/contact"</pre> + </td> + <td>當 App 要建立新的聯絡人資料時使用。</td> + </tr> + <tr> + <td>Email</td> + <td> + <pre class="brush: js"> +type: "mail"</pre> + </td> + <td> </td> + </tr> + <tr> + <td>SMS</td> + <td> + <pre class="brush: js" id="LC48"> +type: "websms/sms", +number: { + regexp:/^[\\w\\s+#*().-]{0,50}$/ +}</pre> + </td> + <td>當 App 要傳送一封文字簡訊時使用。</td> + </tr> + <tr> + <td colspan="1" rowspan="4"><code>open</code></td> + <td>Communication</td> + <td> + <pre class="brush: js"> +type: "webcontacts/contact"</pre> + </td> + <td> </td> + </tr> + <tr> + <td>Gallery</td> + <td> + <pre class="brush: js"> +type: [ + "image/jpeg", + "image/png", + "image/gif", + "image/bmp" +]</pre> + </td> + <td> </td> + </tr> + <tr> + <td>Music</td> + <td> + <pre class="brush: js"> +type: [ + "audio/mpeg", + "audio/ogg", + "audio/mp4" +]</pre> + </td> + <td> </td> + </tr> + <tr> + <td>Video</td> + <td> + <pre class="brush: js"> +type: [ + "video/webm", + "video/mp4", + "video/3gpp", + "video/youtube" +]</pre> + <p>Also expect a <code>blob</code> property which is a {{domxref("Blob")}} object.</p> + </td> + <td>當 App 要顯示影片時使用 (而 <code>view</code> 的Activity 同樣可辦到) 。</td> + </tr> + <tr> + <td colspan="1" rowspan="2"><code>pick</code></td> + <td>Camera, Gallery, Wallpaper</td> + <td> + <pre class="brush: js"> +type: ["image/*", "image/jpeg"]</pre> + </td> + <td>當 App 要取得圖片時使用。</td> + </tr> + <tr> + <td>Communication</td> + <td> + <pre class="brush: js"> +type: [ + "webcontacts/contact", + "webcontacts/email" +]</pre> + </td> + <td>當 App 要檢索某個聯絡人資訊或電子郵件時使用。</td> + </tr> + <tr> + <td><code>record</code></td> + <td>Camera</td> + <td> + <pre class="brush: js"> +type: ["photos", "videos"]</pre> + </td> + <td>當 App 要錄製影片時使用。</td> + </tr> + <tr> + <td><code>save-bookmark</code></td> + <td>Homescreen</td> + <td> + <pre class="brush: js" id="LC46"> +type: "url", +url: { + required:true, + regexp:/^https?:/ +}</pre> + </td> + <td> </td> + </tr> + <tr> + <td colspan="1" rowspan="2"><code>share</code></td> + <td>Bluetooth</td> + <td> + <pre class="brush: js"> +number: 1 +</pre> + </td> + <td> </td> + </tr> + <tr> + <td>Email, Wallpaper</td> + <td> + <pre class="brush: js"> +type: "image/*"</pre> + </td> + <td>當 App 要分享圖片時使用。</td> + </tr> + <tr> + <td colspan="1" rowspan="4"><code>view</code></td> + <td>Browser</td> + <td> + <pre class="brush: js"> +type: "url" +url: { + required: true, + regexp: /^https?:.{1,16384}$/ +}</pre> + </td> + <td>當 App 要開啟 URL 時使用。</td> + </tr> + <tr> + <td>Email</td> + <td> + <pre class="brush: js" id="LC64"> +type: "url", +url: { + required:true, + regexp:/^mailto:/ +}</pre> + </td> + <td> </td> + </tr> + <tr> + <td>PDFjs</td> + <td> + <pre class="brush: js"> +type: "application/pdf"</pre> + </td> + <td>當 App 要顯示 PDF 文件內容時使用。</td> + </tr> + <tr> + <td>Video</td> + <td> + <pre class="brush: js"> +type: [ + "video/webm", + "video/mp4", + "video/3gpp", + "video/youtube" +]</pre> + <p>Also expect a <code>url</code> property which is a string.</p> + </td> + <td>當 App 要顯示影片時使用 (而 <code>open</code> 的 Activity 同樣可辦到)。</td> + </tr> + <tr> + <td><code>update</code></td> + <td>Communication</td> + <td> + <pre class="brush: js"> +type: "webcontacts/contact"</pre> + </td> + <td>當 App 要更新聯絡人時使用。</td> + </tr> + </tbody> +</table> +<h2 id="規格">規格</h2> +<p><em>Web Activities</em> 目前尚不屬於任何規格,但其中某些部分與當前的 <a href="https://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview-respec.html" title="http://www.w3.org/TR/web-intents/">Web Intents</a> 有所重複。事實上,Mozilla 規劃 <em>Web Activities </em>正是想提議用以替代 <em>Web Intents</em>。若要進一步了解相關資訊,可參閱 <a href="http://lists.w3.org/Archives/Public/public-web-intents/2012Jun/0061.html" title="http://lists.w3.org/Archives/Public/public-web-intents/2012Jun/0061.html">Web Intents Task Force ML</a> 上的討論。</p> +<h2 id="另可參閱">另可參閱</h2> +<ul> + <li>{{domxref("MozActivity")}}</li> + <li>{{domxref("MozActivityRequestHandler")}}</li> + <li>{{domxref("MozActivityOptions")}}</li> + <li>{{domxref("window.navigator.mozSetMessageHandler()","navigator.mozSetMessageHandler()")}}</li> + <li><a href="https://hacks.mozilla.org/2013/01/introducing-web-activities/" title="https://hacks.mozilla.org/2013/01/introducing-web-activities/">Introducing Web Activities</a></li> +</ul> |