Как сохранить значения для конкретной вкладки для расширений Chrome и Safari? - PullRequest
0 голосов
/ 28 июля 2011

Я разрабатываю расширение для всех браузеров.Как сохранить значения табуляции в сеансе?Я решил эту проблему в Firefox с помощью объекта NSISessionStore.В Safari и Google Chrome я использовал SessionStorage;этот объект хранит значения для определенной вкладки с определенным доменом.Мне нужно решение о том, как хранить значения для конкретной вкладки.

Ответы [ 3 ]

0 голосов
/ 14 декабря 2013

простой способ сделать это, хотя и не идеальный, поскольку это выглядело бы беспорядочно, было бы хранить значения в хэше URL

говорят, что URL вкладки был http://whatever.com/ вы можете сохранить значение в хеш http://whatever.com/#value1=12&value2=10&value3=15212

также будет проблема, если веб-сайт использует хеш-объект для чего-либо, такого как якоря "на странице" или материал типа ajaxy

0 голосов
/ 19 августа 2014

Ответ Safari

На вашей глобальной странице сохраните прямо на вкладке .. так, например, в сообщении из внедренного скрипта

// global page
safari.application.addEventListener("message", function(event){
    switch(event.name){
        case "saveData":
            event.target.page.tabData = { data: myData }
        break;
        case "getData":
            event.target.page.dispatchMessage("tabData", myData);
        break;
    }
}, false);

-

// injected page

// first save data
safari.self.tab.dispatchMessage("saveData", {firstname:"mike", age: 25} );

// setup listner to recevie data
safari.self.addEventListener("message", function(event){
    switch(event.name){
        case "tabData":
            // get data for page
            console.debug(event.message);
            // { firstname: "mike", age: 25 }
        break;
    }
}, false);

// send message to trigger response
safari.self.tab.dispatchMessage("getData", {} );
0 голосов
/ 28 июля 2011

Если вы спрашиваете, как управлять данными на протяжении всей жизни вкладки, вы можете просто создать объект для вкладки при ее создании и удалить его при закрытии.

// Create data store
var tabDataStore = {};
// Create listeners
chrome.tabs.onCreated.addListener(function (tab) {
    tabDataStore['tab_' + tab.id] = {
        urls: []
    };
});
chrome.tabs.onRemoved.addListener(function (tabId) {
    delete tabDataStore['tab_' + tabId];
});
// Save something against that tab's data
function saveUrl(tab) {
    tabDataStore['tab_' + tab.id].urls.push(tab.url);
}
// Load something from tab's data
function loadOriginalUrl(tab) {
    tabDataStore['tab_' + tab.id].urls[0];
}

Однако этоэто все предположение, и вы можете захотеть что-то совершенно другое.Кроме того, это зависит от того, когда и что именно вы хотите сохранить.

Дополнительную информацию о вкладках можно найти в официальной документации .

Если вы хотите что-то сохранить, выможно использовать localStorage .

...