2017-01-12 8 views
0

Как сказано в названии, после загрузки расширения, загрузки фона (отображается предупреждающим сообщением), но затем onCommand не работает. Я загрузил расширение в Chrome, и он работал только один раз (не первый раз, когда я загрузил расширение, но когда я нажал горячую клавишу).Невозможно ввести скрипт с помощью tabs.executeScript из chrome.commands.onCommand listener

Я использую Канарские острова.

Background.js

alert('a'); 
chrome.commands.onCommand.addListener(function (command) { 
    alert('clicked'); 
    if (command === "toggle-feature") { 
     chrome.tabs.query({}, function (tabs) { 
      alert('tabs'); 
      chrome.tabs.executeScript(tabs[1].id, {"file": "content_script.js"}); 
     }); 
    } 

}); 

manifest.json

{ 
    "manifest_version": 2, 
    "name": "Extractor", 
    "version": "1", 
    "description": "Extract", 
    "icons": { 
     "16": "logo16.png", 
     "48": "logo48.png", 
     "128": "logo128.png" 
    }, 
    "page_action": { 
     "default_icon": { 
      "16": "logo16.png", 
      "48": "logo48.png", 
      "128": "logo128.png" 
     }, 
     "default_title": "Extractor" 
    }, 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": true 
    }, 
    "permissions": [ 
     "tabs", 
     "https://www.msn.com/*", 
     "activeTab", 
     "http://*/*", 
     "https://*/*"  
    ], 
    "commands": { 
     "toggle-feature": { 
      "suggested_key": { 
       "default": "Ctrl+Shift+1", 
       "windows": "Ctrl+Shift+2" 
      },  
      "description": "Extract now" 
     } 
    }  
} 

Я попытался удалить и изменить постоянное значение, но без удачи.

Я предполагаю, что это более фундаментальная проблема, возможно, с Chrome. Я отключил кеш в режиме разработчика, а затем удалил и установил расширение.

+1

Если вы не используете функцию Canary, я буду развиваться на Chrome stable. Это очень неприятно, когда ошибка браузера останавливает вас. Через несколько минут я все глубже посмотрю на все. – SethWhite

+0

Вы пытаетесь ввести * content_script.js * в активную вкладку, когда нажата команда горячих клавиш? – Makyen

+0

Что именно * отображается * в [различных соответствующих консолях для вашего расширения] (http://stackoverflow.com/a/38920982/3773011) при загрузке и выполнении расширения? – Makyen

ответ

0

Вы вероятно пытаются внедрить content_script.js во вкладку активной в текущем окне. Список, который вы сейчас получаете от chrome.tabs.query(), будет включать все вкладки, открытые во всех открытых окнах. Ваш текущий код попытается внедрить этот скрипт в любую вкладку, указанную вторым в этом списке.

Вы должны изменить свой chrome.tabs.query() и chrome.tabs.executeScript() к чему-то вроде:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
    //The active tab in the current window with be tabs[0]. 
    chrome.tabs.executeScript(tabs[0].id, {"file": "content_script.js"}); 
}); 

Я только проверил это в финальной версии Chrome, не канарейка. Если у вас все еще есть проблемы с Canary, я бы предложил вам протестировать версию выпуска Chrome, чтобы любые проблемы, связанные с Canary, можно было изолировать от вашего расширения. После того, как вы работаете в выпуске Chrome, попробуйте использовать Canary.

 Смежные вопросы

  • Нет связанных вопросов^_^