Я хотел бы создать расширение для вставки html на каждую открытую страницу, как только она будет установлена без перезагрузки.
веб-страница.html:
<html>
<head>
<meta charset="utf-8" />
<title>Extension</title>
<script>
var go = function() {
var event = document.createEvent('Event');
event.initEvent('hello');
document.dispatchEvent(event);
};
</script>
</head>
<body>
<a href="javascript:go();">Click me</a>
</body>
</html>
манифест.json:
{
"name": "Chrome Extension Test",
"version": "0.1",
"description": "Test",
"manifest_version": 2,
"background" : {
"persistent": true,
"scripts": ["background.js"]
},
"permissions": ["http://*/*", "https://*/*"],
"content_scripts": [{
"matches": ["http://*/*", "https://*/*"],
"js": ["content_script.js"]
}]
}
content_script.js:
(function() {
document.addEventListener("hello", function(data) {
chrome.runtime.sendMessage("test");
});
})();
фон.js:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
alert("message received");
console.log("background message received");
});
Если расширение уже установлено, оно работает. Но если расширение установлено после загрузки веб-страницы, сценарий содержимого не может получить событие, отправленное с веб-страницы, если только не перезагрузить.
Есть ли способ получить событие в сценарии контента без перезагрузки?