1

ブラウザのアクションがクリックされたときに「本体」にマウスダウンイベントリスナーをバインドするChrome拡張機能があります。ブラウザ アクションが再度クリックされると、mousedown イベントのバインドが解除されます。

しかし、何らかの理由で、コードが実行されたとログに記録されていても、バインド解除が機能していません。bind()/unbind() メソッドも試してみましたが、役に立ちませんでした。

どんな助けでも大歓迎です。ありがとう!

マニフェスト.json

{
  "name": "My Extension",
  "description": "View Font Info",
  "manifest_version": 2,
  "version": "1",
  "permissions": ["tabs", "http://*/*", "https://*/*"],

  "browser_action": {
    "default_icon": "f.png"
  },

  "background": {
    "scripts": ["background.js"]
  }
}

background.js

var toggle = false;
chrome.browserAction.onClicked.addListener(function(tab) {
  toggle = !toggle;
  if(toggle){
    chrome.browserAction.setIcon({path: "f.png", tabId:tab.id});

    chrome.tabs.executeScript(tab.id, {file:"jquery.js"}, function(){
      chrome.tabs.executeScript(tab.id, {file: "on.js"});
    });
  }
  else{
    chrome.browserAction.setIcon({path: "", tabId:tab.id});

    chrome.tabs.executeScript(tab.id, {file:"jquery.js"}, function(){
      chrome.tabs.executeScript(tab.id, {file: "off.js"});
    });
  }
});

on.js (イベントをバインドするスクリプト)

console.log("On");
$("body").on('mousedown.custom', function(e){
    e.preventDefault();
    // do something...
}); 

off.js (イベントのバインドを解除するスクリプト)

console.log('off');
$("body").off('mousedown.custom');
4

1 に答える 1