SitesSDK.subscribe(messageType, callback)

此函數實際上是訊息監聽器,用來監聽從主機網站發送的訊息。這是非同步呼叫。

參數

當 SDK 收到特定類型的訊息時,就會呼叫已註冊的回呼。如果回呼傳回值,則該值會傳回給頁面。如果沒有對此函數傳送任何回呼,系統就會刪除該特定訊息類型的任何已註冊監聽器。

這些是 JavaScript 回呼,所以函數應使用 JavaScript 閉包或適當地連結函數,以確保能夠存取適當的內容。

名稱 類型 描述

messageType

字串

訊息類型:

  • SETTINGS_UPDATED

  • TRIGGER_ACTIONS

  • EXECUTE_ACTION

  • GET_ACTIONS

  • GET_TRIGGERS

  • COPY_CUSTOM_DATA

  • PASTE_CUSTOM_DATA

callback

函數

從主機網站接收訊息時的函數。

訊息類型

訊息類型 描述
SETTINGS_UPDATED 訂閱此訊息即可在「設定值面板」中的任何值發生變更時收到通知。元件通常會藉由更新其在使用者介面中的轉譯來回應。
TRIGGER_ACTIONS 發布此訊息會引發觸發程式並傳送有效負載。
EXECUTE_ACTION 訂閱此訊息即可處理自訂動作。監聽器通常會藉由執行指定的動作來處理此訊息。
GET_ACTIONS 訂閱此訊息即可宣告元件可執行的動作陣列。傳回動作陣列。
GET_TRIGGERS 訂閱此訊息即可宣告元件可引發的觸發程式陣列。傳回觸發程式陣列。
COPY_CUSTOM_DATA 訂閱此訊息即可處理將「自訂設定值資料」複製到剪貼簿。傳回代表要放到剪貼簿的資料物件。
PASTE_CUSTOM_DATA 訂閱此訊息即可處理從剪貼簿貼上「自訂設定值資料」。

用法

有些監聽器會預期傳送資料,有些則預期要傳回資料。

範例 1:

註冊 EXECUTE_ACTION 訊息類型的訊息監聽器:

SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.EXECUTE_ACTION, self.executeAction,self);

已註冊的 callback 函數應接受一個引數,如下所示:

// typical signature of a callback function registered with a message
// type
function (args) {
                var payload = args.detail.message.payload,
                                        action = args.detail.message.action,
                                        actionName =  action && action.actionName;

                // do something here with the payload data

        }

範例 2:

通常會使用如以下的程式碼來實行 COPY_CUSTOM_DATA 監聽器:

     // listen for COPY_CUSTOM_DATA request
     SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.COPY_CUSTOM_DATA, 

copyCustomDataListener() 方法會傳回代表要複製到剪貼簿的資料物件,例如:

     // Handle Copy Style (save customSettingsData to the clipboard)
     self.copyCustomDataListener = function() {
         return {
             prop1: this.prop1(),
             prop2: this.prop2()
         };
     };

範例 3:

PASTE_CUSTOM_DATA 要求會接受資料,但不一定要傳回任何項目:

// listen for PASTE_CUSTOM_DATA request
SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.PASTE_CUSTOM_DATA, pasteCustomDataListener);

此外,還有:

// Handle Paste Style (apply customSettingsData from the clipboard)
self.pasteCustomDataListener = function(data) {
     ...
};