此函數實際上是訊息監聽器,用來監聽從主機網站發送的訊息。這是非同步呼叫。
參數
當 SDK 收到特定類型的訊息時,就會呼叫已註冊的回呼。如果回呼傳回值,則該值會傳回給頁面。如果沒有對此函數傳送任何回呼,系統就會刪除該特定訊息類型的任何已註冊監聽器。
這些是 JavaScript 回呼,所以函數應使用 JavaScript 閉包或適當地連結函數,以確保能夠存取適當的內容。
名稱 | 類型 | 描述 |
---|---|---|
|
字串 |
訊息類型:
|
|
函數 |
從主機網站接收訊息時的函數。 |
訊息類型
訊息類型 | 描述 |
---|---|
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) { ... };