Spec-Zone.ru › Web Extensions

tabs.insertCSS()

Вставляет CSS в страницу.

Примечание: При использовании Manifest V3 или выше, используйте scripting.insertCSS() и scripting.removeCSS() для вставки и удаления CSS.

Для использования этого API необходимо иметь разрешение на URL страницы, либо явно как разрешение на хост, либо используя разрешение activeTab.

Вы можете вставить CSS только в страницы, чьи URL можно выразить с помощью шаблона соответствия: это означает, что его схема должна быть одной из "http", "https" или "file". Это означает, что вы не можете вставлять CSS в встроенные страницы браузера, такие как about:debugging, about:addons или страницу, открывающуюся при открытии новой пустой вкладки.

Примечание: Firefox разрешает URL-адреса в вставленных файлах CSS относительно самого файла CSS, а не страницы, в которую он вставлен.

Вставленный CSS можно удалить, снова вызвав tabs.removeCSS().

Это асинхронная функция, которая возвращает Promise (только в Firefox).

Синтаксис

let inserting = browser.tabs.insertCSS(
  tabId,           // optional integer
  details          // object
)

Параметры

tabId Необязательно

integer. ID вкладки, в которую нужно вставить CSS. По умолчанию активная вкладка текущего окна.

details

Объект, описывающий вставляемый CSS. Он содержит следующие свойства:

allFrames Необязательно

boolean. Если true, CSS будет вставлен во все фреймы текущей страницы. Если это false, CSS вставляется только в верхний фрейм. По умолчанию false.

code Необязательно

string. Код для вставки в виде текстовой строки.

cssOrigin Необязательно

string. Может принимать одно из двух значений: "user", чтобы добавить CSS как пользовательский стиль или "author", чтобы добавить его как авторский стиль. Если этот параметр опущен, CSS добавляется как авторский стиль.

  • "user" позволяет предотвратить переопределение веб-сайтом вставленного вами CSS: см. Порядок каскадирования.
  • "author" стили ведут себя так, как будто они появляются после всех авторских правил, указанных на веб-странице. Это поведение включает любые авторские стили, динамически добавленные скриптами страницы, даже если это добавление происходит после завершения вызова insertCSS.
file Необязательно

string. Путь к файлу, содержащему код для вставки. В Firefox относительные URL-адреса разрешаются относительно текущего URL-адреса страницы. В Chrome эти URL-адреса разрешаются относительно базового URL-адреса расширения. Для кроссбраузерной работы вы можете указать путь в виде абсолютного URL-адреса, начинающегося с корня расширения, например: "/path/to/stylesheet.css".

frameId Необязательно

integer. Фрейм, в который нужно вставить CSS. По умолчанию 0 (верхний фрейм).

matchAboutBlank Необязательно

boolean. Если true, код будет вставлен в встроенные фреймы "about:blank" и "about:srcdoc", если ваше расширение имеет доступ к их родительскому документу. Код не может быть вставлен в верхние фреймы about:. По умолчанию false.

runAt Необязательно

extensionTypes.RunAt. Наиболее раннее время вставки кода в вкладку. По умолчанию "document_idle".

Возвращаемое значение

A Promise, который будет выполнен без аргументов, когда весь CSS будет вставлен. Если произойдет какая-либо ошибка, обещание будет отклонено с сообщением об ошибке.

Примеры

В этом примере в текущую активную вкладку вставляется CSS, взятый из строки.

let css = "body { border: 20px dotted pink; }";

browser.browserAction.onClicked.addListener(() => {

  function onError(error) {
    console.log(`Error: ${error}`);
  }

  let insertingCSS = browser.tabs.insertCSS({code: css});
  insertingCSS.then(null, onError);
});

В этом примере вставляется CSS, загруженный из файла, упакованного с расширением. CSS вставляется во вкладку с ID 2:

browser.browserAction.onClicked.addListener(() => {

  function onError(error) {
    console.log(`Error: ${error}`);
  }

  let insertingCSS = browser.tabs.insertCSS(2, {file: "content-style.css"});
  insertingCSS.then(null, onError);
});

Примеры расширений

  • apply-css
  • beastify
  • session-state

Совместимость с браузерами

Рабочие столы Мобильные
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet
insertCSS
ДаДоступно только для использования в Manifest V2.
14Доступно только для использования в Manifest V2.
47Доступно только для использования в Manifest V2.
?
ДаДоступно только для использования в Manifest V2.
14Доступно только для использования в Manifest V2.
? ?
54Доступно только для использования в Manifest V2.
?
15Доступно только для использования в Manifest V2.
?
cssOrigin 39 79 53 ? Нет Нет ? ? 54 ? Нет ?
frameId 39 14 47 ? 26 Нет ? ? 54 ? Нет ?
matchAboutBlank 39 14 Нет ? 26 Нет ? ? Нет ? Нет ?
runAt 20 79 47 ? 15 Нет ? ? 54 ? Нет ?

Примечание: Этот API основан на API chrome.tabs Chromium. Данная документация получена из tabs.json кода Chromium.

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API