0
chrome.browserAction.onClicked.addListener
をクリックすることなくこのコードを実行したいと思います。これはどうすればいいですか?拡張ボタンをクリックせずにこのコードを実行するにはどうすればよいですか?
これはコードです:
var ToggleJSApplication = {
triggerWin: null,
urlPattern: 'http://*',
init: function() {
var self = this;
self.updateIcon(function() {
chrome.browserAction.onClicked.addListener(self.toggleState.bind(self));
chrome.windows.onFocusChanged.addListener(self.onWinFocusChanged.bind(self));
});
},
getState: function(incognito, callback) {
var self = this,
data = {
'primaryUrl': self.urlPattern,
'incognito': incognito || false
};
chrome.contentSettings.javascript.get(data, function(state) {
state.enabled = (state.setting === 'allow');
if (typeof callback === 'function') callback(state);
});
},
setState: function(incognito, enabled, callback) {
var self = this,
data = {
'primaryPattern': '<all_urls>',
'setting': (enabled) ? 'allow' : 'block',
'scope': (incognito === true) ? 'incognito_session_only' : 'regular'
};
chrome.contentSettings.javascript.set(data, function() {
self.updateIcon();
if (typeof callback === 'function') callback();
});
},
toggleState: function() {
var self = this;
chrome.windows.getCurrent(function(win) {
self.triggerWin = win;
self.getState(win.incognito, function(state) {
self.setState(win.incognito, !state.enabled, function() {
self.reloadCurrentTab();
});
});
});
},
onWinFocusChanged: function() {
var self = this;
chrome.windows.getCurrent(function(win) {
self.triggerWin = win;
self.updateIcon();
});
},
reloadCurrentTab: function() {
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) {
var tab = tabs[0];
chrome.tabs.duplicate(tab.id);
chrome.tabs.remove(tab.id);
});
},
updateIcon: function(callback) {
var self = this,
incognito = (self.triggerWin && self.triggerWin.incognito) || false;
self.getState(incognito, function(state) {
if (state.enabled) {
chrome.browserAction.setIcon({path: 'icons/38-on.png'});
chrome.browserAction.setTitle({title: 'JavaScript is enabled'});
}
else {
chrome.browserAction.setIcon({path: 'icons/38-off.png'});
chrome.browserAction.setTitle({title: 'JavaScript is disabled'});
}
if (typeof callback === 'function') callback();
});
}
};
ToggleJSApplication.init();
私はすでに、コンテキストメニューのを使用してみましたが、私は失敗しました。回避策はありますか?
をブラウザのアクションはちょうど 'ToggleJSApplication.toggleStateを()'を実行をクリックするコンテンツスクリプトは、のような単純なことができます。ブラウザアクションをクリックせずにコードを実行すると、ToggleJSApplication.toggleState();でスクリプトを終了することになります。私はあなたがもっと複雑なことをしたいと思うが、それは私には分かりません。どのような状況であなたのスクリプトを実行したいですか? – Teepeemm
@Teepeemm基本的にボタンをクリックすると上記のコードがすべて実行されます。 –
@Teepeemm私はあなたのToggleJSApplication.toggStState()を試しました。それは動作します! ty。あなたはそれを正しい答えとしてマークできるように、答えにそれを入力してください。 –