Ответ 1
Относительно легко добавить целые веб-страницы, указав свой контент script в iframe. Просто следуйте этим рекомендациям:
-
Поместите файлы
*.htm
или*.html
в папку источника расширения. -
Поместите любые файлы
*.css
и*.js
, которые использует HTML, в папку расширения. -
Объявить HTML файл как ресурсы. EG:
"web_accessible_resources": ["Embedded_Hello_world.htm"]
-
Не используйте встроенный или внешний сервер, javascript в ваших HTML файлах. Это позволяет избежать проблем с политикой безопасности содержимого (CSP).
-
Этот вопрос не распространяется на связь с страницей /iframe, но если вы хотите это сделать, это немного более активно. Искать здесь на SO; он был покрыт много раз.
Пример:
Вы можете увидеть это в действии:
- Создание новой папки расширения.
- Загрузите jQuery в него.
- Создайте 5 файлов, как указано ниже.
- Загрузите распакованное расширение (вы можете увидеть аналогичные шаги в этом ответе.)
- Перезагрузить страницу в Chrome; вы увидите страницу "Hello World", встроенную в верхнюю часть.
Создайте эти файлы в папке расширения:
manifest.json:
{
"manifest_version": 2,
"content_scripts": [ {
"js": [ "iframeInjector.js" ],
"matches": [ "https://stackoverflow.com/questions/*"
]
} ],
"description": "Inject a complete, premade web page",
"name": "Inject whole web page",
"version": "1",
"web_accessible_resources": ["Embedded_Hello_world.htm"]
}
iframeInjector.js:
var iFrame = document.createElement ("iframe");
iFrame.src = chrome.extension.getURL ("Embedded_Hello_world.htm");
document.body.insertBefore (iFrame, document.body.firstChild);
Embedded_Hello_world.htm:
<!DOCTYPE html>
<html><head>
<title>Embedded Hello World</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="HelloWorld.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="HelloWorld.js"></script>
</head><body>
<p>Hello World!</p>
</body></html>
HelloWorld.css:
body {
color: red;
background-color: lightgreen;
}
helloworld.js:
$(document).ready (jQueryMain);
function jQueryMain () {
$("body").append ('<p>Added by jQuery</p>');
}