簡體   English   中英

StorageEvent在Excel for Windows中不起作用

[英]StorageEvent does not work in Excel for Windows

正如一些現有線程所暗示的(例如, ),當前對話框不提供API以定期將消息從主機頁面(例如,任務窗格)發送到對話框。

所以我必須尋找一個解決方法:我們在localStorage保留一個變量message ,然后我們定期檢查對話框是否message的值發生了變化。 這就像是通過localStorage手動實現事件監聽器。

有誰知道如何以一種確定有效的方式實現它(給定JavaScript不是一種多線程語言)? 我不希望這個監聽器成本高昂,設置的適當間隔是多少?

編輯1:

我嘗試了@PatrickEvans建議的StorageEvent。 對於加載項和對話框站點,我們需要通過存儲中的變量messageFromHostToSitemessageFromSiteToHost實現sendMessage...receiveMessage...

它適用於Chrome中的Excel Online和IE 11中的Excel Online。但是,它在Excel 2016 for Windows 7或10中不起作用; 我們可以將項目設置為localStorage並將其取回,更改localStorage似乎不會觸發任何內容。

那么有人可以確認Excel 2016 for Windows 7或10確實不支持StorageEvent嗎? 在這種情況下,我仍在尋找其他解決方法......

編輯2:

我最后做了一個簡化的例子:這是xml文件 ,它調用加載項站點 它在Excel Online中運行良好,但不會在Excel for Windows中觸發事件。

在此輸入圖像描述

我在應用程序之間進行通信時遇到類 在我的測試中,Excel Online storageEvent有效,因為通信是在同一“實例”的瀏覽器選項卡之間進行的。 使用Excel for Windows,2個加載項位於單獨的瀏覽器“實例”中; 哪些不通信storageEvents。 更糟糕的是Office for Mac(WebKit); 它沒有傳遞storageEvents,也無法從其他應用程序讀取存儲更改,除非它們重新啟動 - 我相信這是因為存儲值是為實例緩存的(不寫入磁盤而對其他實例/應用程序不可見) 。

因此,我相信Excel Online可以使用StorageEvents,Excel for Windows需要輪詢(例如每秒檢查一次),Excel for Mac可能需要基於服務器的解決方案,例如WebSockets。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM