Как ограничить скрипт содержимого расширения Chrome определенным типом контента? - PullRequest
5 голосов
/ 22 января 2012

Возможно ли сделать скрипт контента внедренным, только если тип контента документа соответствует определенному шаблону? На самом деле, моя цель гораздо проще: мне нужно, чтобы мой скрипт содержимого вставлялся в документы HTML только (сейчас он также внедряется в документы XML). Сценарии содержимого должны быть внедрены в «document_start».

Ответы [ 2 ]

1 голос
/ 05 января 2013

Я пришел к аналогичной проблеме и решил ее следующим образом.

Вместо ограничения разнообразия документов, в которые вводится скрипт содержимого, на основе документов Content-Type, я решил внедрить скриптво все документы, но выполняйте только в правильных.

Это делается путем анализа свойств document.xmlVersion и document.doctype:

  • document.doctype не должно быть nullв документе HTML;
  • document.xmlVersion не должен быть null в документе XML;

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

Chrome по-прежнему не предоставляет никаких средств для ограничения внедрения сценариев по типу документа.

0 голосов
/ 22 января 2012

Самый надежный способ сделать это - через chrome.webRequest.onHeadersReceived, который позволяет запрашивать и сохранять информацию заголовка ответа (включая Content-Type). К сожалению, этот API в настоящее время недоступен в стабильных выпусках Chrome. (Вы можете использовать экспериментальный API в текущих версиях Chrome, но вы не сможете публиковать расширения, которые его используют.)

Одним из возможных решений для вас является определение того, обрабатывает ли введенный документ Chrome как XML. (И если это так, прекратите обработку документа.) Для этого взломайте проверку, если document.getElementById('webkit-xml-viewer-source-xml') равно null. Этот элемент является частью средства просмотра XML Chrome / webkit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...