У меня есть webextension, светлячок, но я думаю, что это относится и к хрому, а также, который выполняет (chrome.tabs.executeScript
, названный в background.js
) сценарий контента на browserAction.onClicked
слушателя. Этот сценарий содержимого более или менее создает элемент dom на текущей вкладке, используя некоторые данные со страницы. У этого элемента есть html-код внутри и все работает плавно - за исключением того, что я пытаюсь получить его синтаксис выделен. Теперь есть несколько разных библиотек, которые это делают (Prism, HighlightjS, Rainbow и некоторые другие).Вызов библиотеки JS в моем Content Script - WebExtension
Основная идея с этими библиотеками, если я не ошибаюсь, это позвонить colorify
, или некоторые такие функции, на <code>
DIV, а затем с помощью CSS лист выделения, что синтаксис. Я попробовал несколько вещей, чтобы получить как/либо соответствующие Js или CSS скрипты, которые будут получены на странице:
, такие как, executeScript
вместе со сценарием содержания в моем background.js
, в этом случае я «d включить этот сценарий в моей background
декларации в manifest.json
:
chrome.tabs.executeScript(null, {
file: "/content_scripts/highlight.pack.js"
});
chrome.tabs.executeScript(null, {
file: "/content_scripts/my_content_script.js"
});
Я также попытался загрузить его в через манифеста (который также является то, что я пытался с CSS):
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content_scripts/highlight.pack.js"],
"css" : ["content_scripts/solarized-light.css"]
}
],
В любом случае, я тогда попробовал несколько вещей, чтобы загрузить это/эти библиотеки в сценарий контента, который делает вышеупомянутый основной подъем (создание DIV на странице):
Я пытался просто позволить библиотеки, такие как Prism
сделать это вещь (поставив моей <code>
внутри <pre>
и придавая ему соответствующую className
или даже назвав его вручную из скрипта содержания:
var Prism = { highlightElement: function() {} };
window.addEventListener('load',() => {var Prism = window.Prism; });
Или более просто
Rainbow.color(div, function() {
document.body.appendChild(div);
}
// or
window.Rainbow.color(//... etc
или Простейшая всего:
window.hljs.initHighlightingOnLoad();
// or
hljs.initHighlightingOnLoad();
Часть моей проблемы, и почему я обескуражен, что когда я открываю инспектор/отладчик иногда я вижу js file sourced, но я не смогу вызывать какие-либо функции с консоли . И, кроме того, файлы css, похоже, не получают источников.
Так основы, что я ищу, чтобы сделать это, чтобы вызвать 3 участника библиотеку JavaScript внутри моего содержания сценария и источник CSS-лист из моего webextension в activeTab
содержание моего скрипта модифицирующего.
- Как включить библиотеки?
- Как отладить скрипт контента, чтобы проверить, как использовать библиотеки?
_ «Часть моей проблемы, и почему я обескуражен, заключается в том, что когда я открываю инспектор/отладчик, иногда я вижу файл js, но я не смогу вызывать какие-либо функции с консоли . »По умолчанию вы получаете контекст страницы, который [отдельно от контекста расширения] (https://developer.chrome.com/extensions/content_scripts#execution-environment). На клавиатуре есть надпись (по умолчанию - «верх»). Посмотрите, помогает ли это отладке. – Xan
В консоли я вижу выпадающее меню, но не с надписью «top», а не с ошибками и предупреждениями. Но в любом случае я убедился, что все выбрано. Я буду продолжать выталкивать отладчик/инспектор и другие инструменты firefox, а также спасибо за ссылку – Nevermore
. Для текущей версии Chrome это выглядит как [this] (http://imgur.com/AeeCedG) – Xan