Внедрение DIV-тега вверху страницы И автоматический запуск скрипта при загрузке страницы? - PullRequest
2 голосов
/ 17 ноября 2011

Я начал программировать свое собственное расширение Chrome сегодня, и я часами застрял с одной проблемой.Прямо сейчас я отправляю текущий URL-адрес с открытого веб-сайта на мой сервер, где он проверяется на соответствие некоторым критериям, а затем возвращаемое значение отправляется обратно в расширение.Это работает до сих пор.Я использую только popup.html, без фоновой страницы.Запрос отправляется только тогда, когда пользователь нажимает на значок в браузере.Как я могу понять, что запрос автоматически отправляется при загрузке страницы?

Если существует конкретное возвращаемое значение с сервера, пользователю должно быть выдано досадное предупреждение.Оповещения и новые окна ... ну ... раздражают.Наилучшим способом должно быть небольшое всплывающее окно под значком расширения, но это невозможно без щелчка пользователя.Поэтому я подумал о маленьком слое в верхней части страницы.

<html>
<head>

<script>
window.addEventListener("load", sendRequest, false);  
function sendRequest() {
var q = "test";
xmlHttp=new XMLHttpRequest();
xmlHttp.open('GET', 'http://www.testurl.com/check.php?q='+q, true); 
xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4) {
    document.getElementById("textf").innerText = xmlHttp.responseText;
    chrome.tabs.executeScript(null,{code:"<div style='position: absolute; top: 0; left: 0; background-color=blue;layer-background-color: blue;'><p>test </p><p>test2 </p></div>"});
}
  }
xmlHttp.send(null); 
}
</script>
</head>
<body>
//Just for the popup...
<font color="blue"><p id="textf">Checking...</p></font>
</body>
</html>

Если я сделаю

chrome.tabs.executeScript(null,{code:"alert('testalert')"});

, это предупредит меня.Однако, это не работает, и я не могу понять, почему: (

Нужна ли мне фоновая страница для всего этого, так как я хочу проверять URL только при загрузке страницы? Почему -вещь не работает, но предупреждение есть?

Заранее спасибо!

1 Ответ

0 голосов
/ 01 декабря 2011

chrome.tabs.executeScript только для JavaScript.Чтобы добавить контент на веб-страницу, вы должны написать JavaScript, который манипулирует DOM.Хорошее место для того, чтобы начать изучать это, может быть Документация Mozilla DOM .(DOM - это стандарт W3C, и Chrome внедрил его, так что да, страницы Mozilla здесь уместны.)

Если я могу так сказать, кажется, что лучший способ продвинуться вперед - это отказаться от этого и начать все сначаласо сценарием содержимого, определенным в вашем манифесте, чтобы Chrome выполнил его для вас;отметьте в документации по сценариям содержания , чтобы узнать больше.Поскольку вы пытаетесь достичь своей цели без фоновой страницы и, следовательно, должны будете использовать XMLHttpRequest непосредственно из скрипта контента, вы должны добавить "minimum_chrome_version": "13" в манифест, поскольку Chrome 12 и более ранние версии не позволят вам это сделать.

Кстати, практически никто не поймет, о чем вы говорите, когда вы используете "-layer" и "-thing" как этот.Пожалуйста, будьте внимательны, используя правильную терминологию.Спросите своих сверстников, не уверены ли вы в правильности какого-либо термина.

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