1

Я разрабатываю расширение Chrome прямо сейчас.Не удается вызвать chrome.alarms.create() из сценария содержимого

Моя проблема заключается в том, что, когда я называю chrome.alarms.create(), я получаю следующее сообщение об ошибке:

Uncaught TypeError: Cannot read property 'create' of undefined 

У меня есть эти файлы в моем пакете расширения:

manifest.json

{ 
    "manifest_version": 2, 
    "name": "Tool", 
    "version": "1.0", 
    "background": { 
     "scripts": ["background.js"] 
    }, 
    "permissions": ["background", "tabs", "webNavigation", "alarms"] 
} 

myscript.js

chrome.alarms.create("aaa", {"when":Date.now()+5000}); 

chrome.alarms.onAlarm.addListener(function(alarm){ 
    console.log("hello"); 
}); 

background.js

chrome.pageAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(null, {file: "myscript.js"}); 
}); 

Когда я называю chrome.alarms.create() в background.js, он отлично работает. Но, когда я вызываю функцию в myscript.js, это вызывает ошибку.

В чем причина и как я могу исправить эту проблему?

ответ

4

Вы не можете получить доступ ко всем API-интерфейсам Chrome из сценария содержимого. Вам необходимо будет использовать API сообщений для отправки сообщения на фоновый рисунок, который затем может вызвать API сигналов.

https://developer.chrome.com/extensions/messaging https://developer.chrome.com/extensions/content_scripts

+0

Угу, а также рассмотреть возможность проверить [chromeps] (https://github.com/andersp/chromeps) для упрощения передачи сообщений. – anderspitman

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