Можно ли обнаружить, что вы находитесь внутри приложения Chrome?

Я написал расширение для Chrome, которое должно встраиваться на большинство страниц; однако в приложениях Chrome (таких как Slack, Google Hangouts и т. д.) мое расширение по-прежнему встроено в страницу.

Можно ли определить, что я работаю внутри приложения Chrome (или, по сути, везде, где Chrome по умолчанию не показывает URL-адрес веб-сайта) через javascript, поэтому я не могу встроить свой скрипт?


person Phil Barresi    schedule 23.07.2014    source источник
comment
Какие у вас права хоста? "<all_urls>"? Вы говорите об обычных страницах приложений, а не просто <webview> встраиваниях?   -  person Xan    schedule 23.07.2014
comment
В настоящее время я использую ‹all_urls›, потому что хочу встроить его на все обычные веб-страницы. Я не уверен в разнице, и мне нужно посмотреть, чтобы ответить на вставку веб-просмотра.   -  person Phil Barresi    schedule 23.07.2014
comment
Если http/https исчерпывает ваше определение обычных веб-страниц, вы можете вместо этого попробовать с разрешением "*://*/*". Хотя вопрос интересен как есть. Вы пытались посмотреть URL-адрес окон приложения из сценария содержимого?   -  person Xan    schedule 23.07.2014
comment
К сожалению, такие вещи, как slack и видеовстречи, на самом деле имеют URL-адреса — например, company.slack.com или Hangouts.google.com/id   -  person Phil Barresi    schedule 23.07.2014
comment
Вы смотрели на добавление свойства exclude_matches в файл манифеста? Вам нужно будет явно указать все URL-адреса приложений Chrome, которых вы хотите избежать, но это должно работать.   -  person berrberr    schedule 23.07.2014
comment
Я ищу более общее решение для исключения всех приложений Chrome. Учитывая, что я также могу убить свой контент-скрипт на основе информации, доступной в javascript, я думаю, что этот подход — мой лучший выбор.   -  person Phil Barresi    schedule 23.07.2014
comment
Использование вами неофициального термина «хромированные приложения» может привести к тому, что ваш вопрос будет спутан с вопросом о приложениях Chrome, которые являются очень специфическими вещами. Я предлагаю вам удалить тег google-chrome-app. (Расширения Chrome никогда не запускаются внутри приложений Chrome.)   -  person Marc Rochkind    schedule 27.08.2014
comment
Я изо всех сил пытаюсь понять экосистему Chrome; поэтому в интернет-магазине Chrome я загружаю такие приложения, как «Slack», которые могут запускаться в собственном окне на рабочем столе; это отображается на моей странице chrome://apps. Я думал, что это означает, что это приложение для Chrome, но мог ошибаться. Я хочу убедиться, что я не работаю внутри этих приложений.   -  person Phil Barresi    schedule 27.08.2014


Ответы (1)


Вам просто нужно проверить наличие (и это не пусто) chrome.runtime.id:

if (window.chrome && chrome.runtime && chrome.runtime.id) {
    // Here you know that the code is running in a Chrome extension
}
person Winner Crespo    schedule 26.08.2014