先看一个问题:在访问插件页面的时候,content script是否运行?
答:不运行。
Sending a request from a content script looks like this:
contentscript.js ================ chrome.extension.sendMessage({greeting: "hello"}, function(response) { console.log(response.farewell); });
On the receiving end, you need to set up an chrome.extension.onMessage event listener to handle the message. This looks the same from a content script or extension page.
chrome.extension.onMessage.addListener( function(request, sender, sendResponse) { console.log(sender.tab ? "from a content script:" + sender.tab.url : "from the extension"); if (request.greeting == "hello") sendResponse({farewell: "goodbye"}); });
问:前后台能否通过localstorage共享数据
答:可以。
chrome 的storage比localstorage强在哪?
- User data can be automatically synced with Chrome sync (using
storage.sync
). - Your extension's content scripts can directly access user data without the need for a background page.
- A user's extension settings can be persisted even when using split incognito behavior.
- User data can be stored as objects (the
localStorage API
stores data in strings).
可以在前后台共享数据
chrome.storage.local.set( {"key":"val"}, function() { chrome.storage.local.get( {"key":null}, function(o) { alert(o.key); }); });
Android不同的webview共享数据localStorage
- 要有相同的存储数据库
webSettings.setDatabasePath("/data/data/"+this.getPackageName()+"/databases/");
- 要打开设置
settings.setDomStorageEnabled(true);
参考:
http://developer.chrome.com/extensions/messaging.html
developer.chrome.com/extensions/storage.html