Я задаю этот вопрос после просмотра нескольких связанных вопросов по stackoverflow. Я начал с , как определить, установлено ли расширение . Я выбрал метод, в котором я добавляю div к телу, используя скрипты содержимого на некоторых страницах. Вот как я это сделал ...
manifest.json
{
"name": "Install Check",
"content_scripts": [
{
"matches": ["http://host.com/*"],
"js" : ["insert_node.js"]
}
],
"permissions": [
"tabs", "host.com/*"
]
}
insert_node.js (скрипт содержимого)
var insert_node = document.createElement('div');
insert_node.id = "HOST_SITE";
document.body.appendChild(insert_node);
страница хоста
<html>
<head>
</head>
<body>
<h1>This is a host site. Welcome!!!</h1>
<script src="jquery.js"></script>
<script src="notification.js"></script>
</body>
</html>
скрипт установки расширения
$(document).ready(function() {
if ($('#HOST_SITE').length > 0) {
alert("you have our extension installed");
} else {
alert("not installed");
}
});
Моя проблема в том, что предупреждение с сообщением not_installed
всегда всплывает, прежде чем chrome сможет внедрить узел в DOM. Я прочитал об атрибуте run_at
в manifest.json здесь . Но это тоже не решило проблему. Я перепробовал все три значения document_start
, document_idle
, document_end
. Что я здесь не так делаю?