PostMessage API
當 WOPI 主機將 OxOffice Online 包在一個框架( iFrame)時,可以使用 PostMessage API 用來於和 OxOffice Online 互動。這對想要完善整合的 WOPI 主機來講,非常有用。
這個 API 主要基於 WOPI 規範,很少擴充或修改。 所有送出的訊息,都採用以下形式:
{
"MessageId": "<MessageId>",
"SendTime": "<Timestamp when message is sent>",
"Values": {
"<key>": "<value>"
}
}
SendTime
是瀏覽器的 Date.now() 傳回的時間戳記。從 WOPI 主機發送的 PostMessage 也應該使用相同的格式。
需要注意的是,如 WOPI 規範中所提到的,如果尚未收到 Host_PostmessageReady,OxOffice Online 框架將忽略來自 WOPI 主機框架所有訊息。
另外,由於將 OxOffice Online 嵌入 iFrame 中,因此,OxOffice Online 要求 WOPI 主機回應 CheckFileInfo 中的PostMessageOrigin
屬性,必須指定,否則 OxOffice Online 將不會送出任何訊息。
初始化
編輯器 🡆 WOPI 主機
MessageID | Values | 說明 |
App_LoadingStatus |
|
Status 值如下:
|
WOPI 主機 🡆 編輯器
MessageID | Values | 說明 |
Host_PostmessageReady |
通知 OxOffice Online,WOPI 主機已經準備好收送 PostMessage 了。 |
查詢
WOPI 主機可以透過 PostMessage API 向編輯器查詢資料。所有來自編輯器回應的 MessageID,都會在您所傳遞的 MessageID 後面加上 "_Resp"。
WOPI 主機 🡆 編輯器
MessageID | Values | 說明 |
Get_Views |
向編輯器查詢,目前正在編輯文件所有使用者資訊。回應會以 MessageID 為 Get_Views_Resp 的格式傳回。 |
|
Get_Export_Formats |
向編輯器查詢,目前開啟的文件,支援哪些匯出格式。 |
得到的回應。
編輯器 🡆 WOPI 主機
MessageID | Values | 說明 |
Get_Views_Resp |
|
使用 Get_Views 查詢,所得到的所有使用者詳細資訊。 |
Get_Export_Formats_Resp |
|
使用
|
編輯者管理
WOPI 主機 🡆 編輯器
MessageID | Values | 說明 |
Action_RemoveView |
|
移除指定 Id 的編編者,也就是將某位編輯者踢出共編行列。 |
編輯器 🡆 WOPI 主機
MessageID | Values | 說明 |
Views_List |
與 Get_Views_Resp 相同。 |
所有正在參與該文件編輯的使用者詳細資訊。每次有編輯者加入或離開都會觸發此資訊。 |
各類指令
WOPI 主機 🡆 編輯器
MessageId |
Values |
說明 |
---|---|---|
|
|
儲存文件。
|
|
|
建立文件副本,並給予新檔名(另存新檔)。
|
|
|
開啟或關閉跟隨特定編輯者功能。這會讓編輯畫面和指定對象同步。
|
|
關閉文件。 |
|
|
列印文件。 |
|
|
|
以 |
|
|
從指定的位址下載圖片並插入文件中。 |
|
|
顯示具有 Lable 文字的忙碌畫面,類似存檔中的畫面。 |
|
如果有忙碌畫面的話,關掉忙碌畫面。 |
|
|
|
變更使用者介面:
|
|
|
繞過內部貼上機制,直接貼上資料到文件內。 例如:
|
編輯器 🡆 WOPI 主機(回應)
MessageId |
Values |
說明 |
---|---|---|
|
|
文件載入完成。
|
|
|
文件儲存完成。只有
|
|
|
跟隨狀態變更。
|
|
|
變更使用介面。
|
文件版本復原
WOPI 主機 🡆 編輯器
MessageId |
Values |
說明 |
---|---|---|
|
|
復原版本。唯一可能的值是 Pre_Restore 此訊息由主機在實際復原文件之前以及使用者確定復原之後傳送。 這樣,如果目前文件,還有未儲存的修改,OxOffice Online 可以在恢復文件之前將它們儲存到雲端硬碟中。 |
編輯器 🡆 WOPI 主機
MessageId |
Values |
說明 |
---|---|---|
|
|
這是對 目前 表示 WOPI 主機可以繼續將文件回復到較早的版本。 |
只有當 App_LoadingStatus
包含功能中的 VersionStates 時,才會發出這些訊息。 否則,主機可以立即將版本還原到早期版本。
其他
WOPI 主機 🡆 編輯器
MessageId |
Values |
說明 |
---|---|---|
|
|
在頂端工具列插入自訂按鈕(僅顯示在傳統介面)。該按鈕被點擊時,若未指定
|
|
|
隱藏工具列按鈕。 |
|
|
顯示工具列按鈕。 |
|
|
移除工具列按鈕。 |
|
|
移除狀態列元件。 |
|
隱藏下拉選單列。 |
|
|
顯示下拉選單列。 |
|
|
喚醒休眠中的編輯器。通常編輯者在一段時間後沒有任何動作時,編輯器會進入休眠狀態(編輯介面變暗,並有訊息顯示),必要時,會中斷與伺服器連線。 |
|
|
隱藏水平尺規(僅適用文字文件 Writer)。 |
|
|
隱藏水平尺規(僅適用文字文件 Writer)。 |
|
|
|
隱藏下拉選單中的選項。 |
|
|
顯示下拉選單中的選項。 |
|
|
停用或啟用某個 UI 命令的預設行為。
設為 true 時,指定的動作只會發出 請注意,某些動作沒有任何預設行為(如 舉例來說, 同樣地,當停用 WOPI 主機必須很小心,不要在啟用預設行為的狀態下,發出重複的 |
|
|
向編輯器傳送 UNO 命令。請參考:framed.doc.html |
查詢工具列按鈕 ID
工具列按鈕 ID 在下列程式中的 getToolItems/create 函數定義:
-
Control.TopToolbar.js:用於桌面或平板電腦上的頂部工具列。
-
Control.MobileTopBar.js:用於智慧型手機上的頂部工具列。
-
Control.MobileBottomBar.js:用於智慧型手機底部工具列。
-
Control.StatusBar.js:用於桌面上的狀態列。
這些通常不會改變,但並不保證這些 ID 會穩定存在。
查詢狀態列元件 ID
狀態列元件 ID 定義在 Control.StatusBar.js 的 onDocLayerInit
函數中。通常不會改變,但並不保證這些 ID 會穩定存在。
事件通知
編輯器 🡆 WOPI 主機
MessageId |
Values |
說明 |
---|---|---|
|
|
Insert_Button API 新增的自訂按鈕時會發出此事件。
|
|
|
當使用者選擇「列印」或「全螢幕投影」或「下載為…」,且 WOPI 主機在 CheckFileInfo 的 這應用於無法依賴瀏覽器下載的情況,例如手機的 Web view 模式。 |
|
|
要求 WOPI 主機開啟新的瀏覽器分頁,並建立新文件。 文件類型以 DocumentType 參數傳遞,可以是「text(文字文件)」、「spreadsheet(試算表)」、「presentation(簡報)」或「drawing(繪圖)」。 |
|
要求 WOPI 主機顯示另存新檔 UI,以便使用者可以選擇路徑和檔案名稱來建立目前檔案的副本。 若使用者確定存檔,則 WOPI 主機需以 |
|
|
通知 WOPI 主機使用者在開啟有密碼保護的檔案時,點擊了「取消」,而不是輸入密碼。 |
|
|
通知 WOPI 主機只用者點擊了超連結,並確認確實想要離開文件以開啟超連結。這對於將 OxOffice Online 嵌入到行動裝置 iframe 中的 App 特別有用,實際嘗試開啟新視窗,應觸發在 Android 上的 Activity(或在 iOS 上類似的操作)。 WOPI 主機可能也想利用 |
|
|
|
更新文件的修改狀態。如果文件自上次儲存後被修改,則 請注意,這個通知可能會在不更改先前值的情況下觸發,因此必須檢查 |
呼叫 Python 巨集
WOPI 主機 🡆 編輯器
MessageId |
Values |
說明 |
---|---|---|
|
|
執行指定功能的 Python 巨集:
|
編輯器 🡆 WOPI 主機
MessageId |
Values |
說明 |
---|---|---|
|
|
傳回 Python 執行結果。commandName 放的是巨集的 URL。 |