2013-02-18 2 views
2

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

chrome.windows.onRemoved.addListener(function(windowId){ 
    alert("Browser exit!"); 
}); 
+0

Вы попробовали это решение? http://stackoverflow.com/questions/9961544/chrome-detect-when-browser-exits – Danilo

+0

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

ответ

2

Ваша общая проблема заключается в том, что выход из браузера означает, что браузер больше не может запустить сценарий, чтобы проверить, если он ушел еще - это все равно, что спросить человека, если они умерли: ответ (если вы получаете один), только когда-либо будет «нет».

Одно решение, которое вы могли бы попробовать это затянувшийся фон страницы с background permission:

Делает Chrome начать рано и и закрыли поздно, так что приложения и расширения могут иметь более длительный срок службы.

Когда какое-либо установленное размещенное приложение, упакованное приложение или расширение имеют «фоновое» разрешение, Chrome запускается (невидимо), как только пользователь входит в свой компьютер - до того, как пользователь запустит Chrome. Разрешение «background» также заставляет Chrome продолжать работу (даже после закрытия последнего окна), пока пользователь явно не покинет Chrome.

Это разрешение позволяет Chrome продолжать работать с вашим расширением даже после закрытия всех окон браузера. Как правило, Chrome может делать только те вещи, когда у него открываются окна, поэтому мы сталкиваемся с проблемой того, что Chrome не может обнаружить, когда все окна закрыты (как объяснялось выше). Благодаря фоновому разрешению Chrome сохраняет возможность запуска кода расширения, даже когда все окна закрыты.

+0

Что вы подразумеваете под «разрешением фона»? Вы имеете в виду постоянство фона вроде так: «background»: {"persistent": true, ...} – user436390

+2

@ user436390 К сожалению, я использовал неправильную ссылку! Нет, разрешение на самом деле называется «фон» (см. Обновленную ссылку), и оно отличается от настойчивости. – apsillers

+0

спасибо, я попробую это и сообщит в ближайшее время. – user436390

0

Я просто ищу, чтобы получить контроль, когда мое расширение выходит не за весь браузер; мое расширение использует только текстовое поле, поэтому я устанавливаю его свойство onblur в функцию и помещаю туда код выхода; вероятно, не то, что вы ищете, но это работает для меня!

веб-сайт разработчика Chrome рекомендует не использовать фоновые страницы из-за «памяти и других ресурсов, которые они потребляют»;

Я согласен, что более последовательный способ получить контроль над выходом на расширение будет полезен; это html-страница, которая в противном случае кажется интегрированной с dom;

0

chrome не предоставляет API для обнаружения браузера Chrome, который приближается. Тем не менее, мы можем обнаружить событие открытия браузера Chrome на странице фона при использовании расширения chrome.

background.js

chrome.runtime.onStartup.addListener(function() { 
     console.log("extension started: " + Date.now()); 
    }); 

это событие будет срабатывать, когда хром браузер запустится. Далее вы можете использовать любой трюк, чтобы определить, что браузер Chrome был выходом.

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