2014-01-19 1 views
1

Есть ли способ получить доступ к хром. * Apis (конкретно chrome.history) от веб-рабочего?Как я могу получить доступ к chrome.history от веб-рабочего?

Если я передаю объект chrome.history или chrome в postMessage, он не работает из-за ошибки преобразования до Transferable.

Я могу успешно запросить историю из моего расширения и передать результаты, но я хотел бы оставить тяжелый подъем работнику вместо основного потока, а затем передать результаты.

ответ

2

Веб-работники должны быть легкими и не наследуть никаких разрешений (not even host permissions) от внутреннего номера (кроме того, chrome даже не определен в веб-работнике).

Если вы делаете действительно тяжелый материал с результатами API chrome.history, вы можете передать результат обратного вызова работнику для обработки (с Transferables, накладные расходы минимальны). Перед тем, как сделать это, убедитесь, что вы просматриваете, действительно ли влияние на производительность является значительным, чтобы гарантировать выполнение такого рода.

+0

Спасибо @Rob W, я применил ручку обратного вызова для рабочего, и он работает красиво. Я запрашиваю 8000+ элементов в моей истории (что довольно быстро), но я хотел передать эту обработку рабочему (в отличие от просто передачи результатов). Я подозреваю, что у кого-то есть плагин управления историей, есть много вещей. – click2install

+1

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

+0

полностью согласен. У меня был код на странице переопределения (что вызвало <1 сек. Отставание). Я, сурово, перевел его на «background.js», у которого нет страницы, и он работает красиво. – click2install

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