Подтвердить что ты не робот

Имеет ли контент script доступ к странице newtab?

Обновление

Спасибо @kofifus за информацию, Chrome от 61 явно запрещает сценарии контента на своей новой вкладке по умолчанию

Предыдущая

Скажем, у меня есть следующее расширение образца, оно выводит test в консоли.

manifest.json

{
  "name": "Test",
  "version": "1.0",
  "manifest_version": 2,
  "content_scripts": [
    {
      "matches": [
        "<all_urls>"
      ],
      "js": [
        "content.js"
      ]
    }
  ]
}

content.js

console.log('test');

Будет ли над расширением работать хорошо на странице chrome://newtab?

Некоторые полезные сведения:

  • Я знаю, что по умолчанию расширение chrome не может получить доступ к страницам chrome://, и мы могли бы изменить это поведение с помощью chrome://flags/#extensions-on-chrome-urls

  • chrome://newtab на самом деле является URL-адресом, подобным https://www.google.co.jp/_/chrome/newtab?espv=2&ie=UTF-8, поэтому он не должен блокироваться указанным выше ограничением.

  • Существует много доступных расширений жестов мыши, например crxMouse, они хорошо работают на странице chrome://newtab

  • Есть также некоторые голоса, говорящие, что не разрешено вводить сценарии содержания в chrome://newtab, например, комментарии @Xan ниже этот ответ введите описание изображения здесь и этот случай автора введите описание изображения здесь

Таким образом, это выглядит странно, как его различное поведение на разных устройствах (или настройках?). Есть ли какие-либо официальные заявления о том, могут ли скрипты контента работать на страницах chrome://newtab? Или есть настройки, которые мы могли бы изменить это поведение?

4b9b3361

Ответ 1

Chrome с 61 явно запрещает сценарии контента на своей новой вкладке по умолчанию

Ответ 2

В: Есть ли какие-либо официальные утверждения о том, могут ли скрипты контента работать в chrome://newtab pages?

A: Не совсем, но Документация Google гласит, что:

Разрешения хоста и контент script сопоставляются на основе набора URL-адресов, определенных шаблонами соответствия. Шаблон соответствия по существу является URL-адресом, который начинается с разрешенной схемы (http, https, file или ftp и может содержать символы "*" ). Специальный шаблон соответствует любому URL-адресу, начинающемуся с разрешенной схемы.

chrome://newtab только перенаправляет пользователя на любой URL-адрес, указанный в качестве новой закладки. Обычно он перенаправляет пользователя на https://<your local google domain>/_/chrome/newtab (разрешенный шаблон соответствия). Но если другое расширение устанавливает новую вкладку на customNewTab.html, то chrome://newtab перенаправит пользователя на chrome-extension://chrome-id/customNewTab.html, а любые другие сценарии содержимого контента не смогут запускаться на новой вкладке.

Этот вопрос SA также подтверждает это. Если вы попробуете добавить "exclude_matches": ["*://*/_/chrome/newtab*"], в манифест, содержимое script перестанет работать на новой вкладке.

Q: Есть ли параметр, который мог бы изменить это поведение?

Нет рядом с переопределенной страницей, установленной другим расширением. (Обратите внимание, что темы изменяют внешний вид новой вкладки и не перекрывают новый URL-адрес вкладки)

Q: Будет ли над расширением работать хорошо в chrome://newtab page?

A: да, если эта вкладка не была переопределена другим расширением.

У меня есть 30 000 пользовательских расширений под названием Screen Shader в магазине расширения с огромным разнообразием различных версий хром и нескольких браузеров, и до сих пор никто не жаловался на то, что он не работает на новой вкладке, когда они жалуются много о других вещах.

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

На боковой панели: проблемы с нажатием клавиши на новой вкладке

На своем blogpost на http://www.toptip.ca/2010/01/google-chrome-content-script.html разработчик "Boss Key and Button" жалуется на проблемы с запуском содержимого script на новой вкладке. Его расширение минимизирует все хромированные окна и открывает тот, который вы сейчас используете на новой вкладке, когда вы нажимаете F9. Он думал, что контент script не работал на новой вкладке, потому что всякий раз, когда он использовал свой ярлык на новой вкладке, ничего не происходило. Он не понимал, что причина, по которой он не работал на новой вкладке, заключался в том, что хром перенаправляет любые нажатия клавиш на панель браузера, поэтому его содержимое script не может захватить нажатие клавиши.

Попробуйте использовать его расширение и нажимая F9 на случайной странице. Все хромированные окна будут сведены к минимуму. вернитесь к этой случайной странице и нажмите в адресной строке и попробуйте нажать F9. На этот раз ничего не произойдет.