如何寫入不同域的本地存儲。我的想法是,我需要我的Chrome擴展在本地存儲中寫入內容,並且當用戶訪問關聯的網站時,站點站點可以讀取本地存儲的內容。我試圖在用戶的個人數據之間進行同步,而不必將其存儲在服務器中。Chrome擴展程序 - 寫入不同域的本地存儲
5
A
回答
2
我認爲唯一的解決方案是通過跨域限制的腳本注入。
var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
添加文件script.js
您的分機訪問其他網站的本地存儲,你必須在你的清單文件添加到script.js
「web_accessible_resources」。
請注意,在腳本完全加載後腳本會自動刪除,因此請確保您要執行的代碼包含在自執行功能中。
6
Content scripts直接訪問頁面的localStorage。
如果您想要存儲特定域的值,只需打開一個窗口或框架,然後寫入窗口/頁面的本地存儲。
選擇您喜歡的選項來激活頁面:
chrome.tabs.create
創建活動標籤,也許在使用chrome.tabs.query
發現的非活動窗口。- 實驗
offscreenTabs
API(實驗,所以沒有準備好在生產中使用)。看到我發佈在SO上的一些examples。 - 創建一個IFrame並將其插入當前頁面。
window.open
(不推薦...)
當你決定打開一個頁面,挑選一個是重量輕。
/robots.txt
通常是一個不錯的選擇:它存在於大多數網站上,和它是一個純文本文件。激活頁面的內容腳本。您可以使用清單文件並使用messaging API,或將回調添加到以編程方式插入內容腳本(
chrome.tabs.executeScript
)的chrome.tabs.create
方法中。
下面是一個簡單的例子。它需要tabs
API,因爲我使用的是chrome.tabs.executeScript
。此外,您想訪問的來源也應該添加到權限列表中。
chrome.tabs.create({
active: false,
url: 'http://stackoveflow.com/robots.txt'
}, function(tab) {
chrome.tabs.executeScript(tab.id, {
code: 'localStorage.setItem("key", "value");'
}, function() {
chrome.tabs.remove(tab.id);
});
});
相關問題
- 1. Chrome擴展程序和本地存儲
- 2. Chrome擴展程序本地存儲:Background.html無權訪問本地存儲?
- 3. Chrome擴展上的本地存儲
- 4. 檢索本地存儲的JSON Chrome擴展程序
- 5. Chrome擴展替代本地存儲?
- 6. Chrome擴展程序可以訪問本地存儲嗎?
- 7. Chrome擴展程序數據庫存儲
- 8. 從Chrome擴展程序編程中的內容腳本訪問本地存儲
- 9. Google Chrome擴展程序save data localy
- 10. Chrome擴展程序:在內容腳本中多次訪問本地存儲
- 11. Chrome擴展本地存儲不能正常工作
- 12. Chrome擴展程序 - 不保存數據
- 13. Chrome擴展程序商店
- 14. Chrome擴展程序
- 15. Chrome擴展程序
- 16. Chrome擴展程序將數據保存到本地文件
- 17. 跨域jQuery.Ajax請求 - Chrome擴展程序
- 18. Google Chrome擴展程序跨域XMLHttpRequest
- 19. 使用Chrome擴展時訪問CSS中的本地存儲?
- 20. 如何查看/檢查Chrome擴展的本地存儲?
- 21. Chrome擴展程序,內容腳本的程序化注入
- 22. 存儲變量Chrome擴展(域1),但我需要它在遠程域(域2)
- 23. Chrome瀏覽器擴展 - 本地存儲無法正常工作
- 24. 在Chrome擴展中將文件存儲到本地磁盤
- 25. Chrome擴展可以從本地存儲中讀取數據嗎?
- 26. Chrome擴展請求本地存儲配額超時錯誤
- 27. 如何從Chrome擴展本地存儲獲取數據?
- 28. 如何「隱藏」Chrome擴展本地存儲
- 29. Chrome擴展:本地存儲,如何導出
- 30. Chrome擴展程序+飛鏢
當然,這看起來像一個可行的解決方案。雖然我現在的問題是我需要從背景頁面做到這一點。創建一個完整的選項卡會向用戶顯示一些內容。屏幕外標籤不會與背景頁面一起工作。 Window.open()顯然不是一個解決方案。然而,我會嘗試使用iFrame,並讓你知道它是如何發生的。 – budsiya 2013-03-08 19:32:25