Chrome 分机设置
Chrome Extension Settings
我需要制作一个 javascript 函数,该函数永远只有 运行 一次,以便它设置一堆 google chrome 变量,有人知道怎么做吗这样做?
这是我现在拥有的,但我认为它不起作用:
window.onLoad = check();
function check() {
chrome.storage.local.get('defaultLoad', function (x) {
if (x.defaultLoad == undefined) {
chrome.storage.local.set({'defaultLoad': '0'}, function() {
console.log('SearchPanel default');
defaultLoad();
});
}
});
}
function defaultLoad() {
chrome.storage.local.set({'searchPanelOption': 'open'}, function() {
console.log('SearchPanel default');
});
chrome.storage.local.set({'barBackgroundOption': '#000000'}, function() {
console.log('barBackground default');
});
chrome.storage.local.set({'goBackgroundOption': '#000000'}, function() {
console.log('goBackground default');
});
chrome.storage.local.set({'barColorOption': '#ffffff'}, function() {
console.log('barColor default');
});
chrome.storage.local.set({'placeColorOption': '#999999'}, function() {
console.log('placeColor default');
});
chrome.storage.local.set({'searchEngineOption': 'google'}, function() {
console.log('searchEngine default');
});
}
该脚本在页面顶部调用,它应该只 运行 一次,但我认为它不起作用,因为我没有得到任何 console.log输出。
没关系,这段代码确实有效,您只需将函数调用 defaultLoad() 移出 chrome.local.storage.set 调用即可。
window.onLoad = check();
function check() {
chrome.storage.local.get('defaultLoad', function (x) {
if (x.defaultLoad == undefined) {
chrome.storage.local.set({'defaultLoad': '0'}, function() {
console.log('SearchPanel default');
});
defaultLoad();
}
});
}
function defaultLoad() {
chrome.storage.local.set({'searchPanelOption': 'open'}, function() {
console.log('SearchPanel default');
});
chrome.storage.local.set({'barBackgroundOption': '#000000'}, function() {
console.log('barBackground default');
});
chrome.storage.local.set({'goBackgroundOption': '#000000'}, function() {
console.log('goBackground default');
});
chrome.storage.local.set({'barColorOption': '#ffffff'}, function() {
console.log('barColor default');
});
chrome.storage.local.set({'placeColorOption': '#999999'}, function() {
console.log('placeColor default');
});
chrome.storage.local.set({'searchEngineOption': 'google'}, function() {
console.log('searchEngine default');
});
}
所以你想设置默认值。
在单独的文件中定义默认值。
// Define default values.
var options = {
notifyTimeout: 5,
pageInspect: true,
linkInspect: true,
pushItem: false,
notifyMode: 'margin',
};
// a method similar to jquery.ready
function initOptions(callback) {
// get data from remote
chrome.storage.sync.get(null, function(data) {
// merge remote data into local global `options`
$.extend(options, data);
// push them back to remote
// maybe the extension updated and added new default values.
chrome.storage.sync.set(options);
// callback method to use updated options.
callback && callback();
});
}
// listen to remote data changes, if soem value changed
// update the global variable `options`, for example,
// you changed an option in options page and push changes to remote
// in contentscript, this got the changes and update to new value.
// you can use the updated value without a page reload.
chrome.storage.onChanged.addListener(function(changes) {
for (var name in changes) {
var change = changes[name];
options[name] = change.newValue;
}
});
在您要使用选项的页面中,注入此脚本并随意使用全局变量options
,它也适用于 contentscript。
initOptions(function() {
doSomethingWith(options);
});
我写了一篇关于这个的文章,但不是英文的。
仅在初始安装时 运行 有一个事件:
chrome.runtime.onInstalled.addListener(function(details) {
if(details.reason == "install") {
// This code runs once
}
});
但是, 方法更适合设置默认选项。它将用默认选项覆盖任何根本未设置的选项,并保留已设置的任何选项的值。这样更好,因为之后添加更多选项就像向默认选项添加新键一样简单。
我需要制作一个 javascript 函数,该函数永远只有 运行 一次,以便它设置一堆 google chrome 变量,有人知道怎么做吗这样做?
这是我现在拥有的,但我认为它不起作用:
window.onLoad = check();
function check() {
chrome.storage.local.get('defaultLoad', function (x) {
if (x.defaultLoad == undefined) {
chrome.storage.local.set({'defaultLoad': '0'}, function() {
console.log('SearchPanel default');
defaultLoad();
});
}
});
}
function defaultLoad() {
chrome.storage.local.set({'searchPanelOption': 'open'}, function() {
console.log('SearchPanel default');
});
chrome.storage.local.set({'barBackgroundOption': '#000000'}, function() {
console.log('barBackground default');
});
chrome.storage.local.set({'goBackgroundOption': '#000000'}, function() {
console.log('goBackground default');
});
chrome.storage.local.set({'barColorOption': '#ffffff'}, function() {
console.log('barColor default');
});
chrome.storage.local.set({'placeColorOption': '#999999'}, function() {
console.log('placeColor default');
});
chrome.storage.local.set({'searchEngineOption': 'google'}, function() {
console.log('searchEngine default');
});
}
该脚本在页面顶部调用,它应该只 运行 一次,但我认为它不起作用,因为我没有得到任何 console.log输出。
没关系,这段代码确实有效,您只需将函数调用 defaultLoad() 移出 chrome.local.storage.set 调用即可。
window.onLoad = check();
function check() {
chrome.storage.local.get('defaultLoad', function (x) {
if (x.defaultLoad == undefined) {
chrome.storage.local.set({'defaultLoad': '0'}, function() {
console.log('SearchPanel default');
});
defaultLoad();
}
});
}
function defaultLoad() {
chrome.storage.local.set({'searchPanelOption': 'open'}, function() {
console.log('SearchPanel default');
});
chrome.storage.local.set({'barBackgroundOption': '#000000'}, function() {
console.log('barBackground default');
});
chrome.storage.local.set({'goBackgroundOption': '#000000'}, function() {
console.log('goBackground default');
});
chrome.storage.local.set({'barColorOption': '#ffffff'}, function() {
console.log('barColor default');
});
chrome.storage.local.set({'placeColorOption': '#999999'}, function() {
console.log('placeColor default');
});
chrome.storage.local.set({'searchEngineOption': 'google'}, function() {
console.log('searchEngine default');
});
}
所以你想设置默认值。
在单独的文件中定义默认值。
// Define default values.
var options = {
notifyTimeout: 5,
pageInspect: true,
linkInspect: true,
pushItem: false,
notifyMode: 'margin',
};
// a method similar to jquery.ready
function initOptions(callback) {
// get data from remote
chrome.storage.sync.get(null, function(data) {
// merge remote data into local global `options`
$.extend(options, data);
// push them back to remote
// maybe the extension updated and added new default values.
chrome.storage.sync.set(options);
// callback method to use updated options.
callback && callback();
});
}
// listen to remote data changes, if soem value changed
// update the global variable `options`, for example,
// you changed an option in options page and push changes to remote
// in contentscript, this got the changes and update to new value.
// you can use the updated value without a page reload.
chrome.storage.onChanged.addListener(function(changes) {
for (var name in changes) {
var change = changes[name];
options[name] = change.newValue;
}
});
在您要使用选项的页面中,注入此脚本并随意使用全局变量options
,它也适用于 contentscript。
initOptions(function() {
doSomethingWith(options);
});
我写了一篇关于这个的文章,但不是英文的。
仅在初始安装时 运行 有一个事件:
chrome.runtime.onInstalled.addListener(function(details) {
if(details.reason == "install") {
// This code runs once
}
});
但是,