Здравствуйте.
Не могу понять в чем проблема.
Сделал страничку которая посылает сообщение в расширение, с таким кодом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" charset="utf-8">
function send_request() {
var data = {"type":"outcome.update_list"}
var request = document.createTextNode(JSON.stringify(data));
document.head.appendChild(request);
var event = document.createEvent("HTMLEvents");
event.initEvent("something-query1", true, false);
request.dispatchEvent(event);
}
</script>
<body>
<p><button onclick="send_request();"> Послать </button></p>
</body>
</html>
В расширении повесил обработчик который ловит и принимает содержимое data:
var conn = false;
document.addEventListener("something-query1", function(event){chek(event.target.nodeValue)}, true, true);
function connect(){
if (!conn){
conn = true;
} else {
conn = false;
}
}
function chek(e){
console.log(e)
console.log(conn);
}
Проблема в том что в расширении есть переменная
conn значение которой из расширения я могу поменять, функция
connect().
А когда отсылаю сообщение со страницы, вызывается функция chek(), значение
conn как было false так и остается.
Хотя если вызываю
chek() из расширения то conn=true.
А если
chek() вызывается от сообщения то значение conn=false.
То есть когда chek() вызываю с расширения то значение conn показывает правильно, если chek() вызывается с addEventListener то значение всегда false.
В чем проблема? Почему chek() не берет правильное значение в контексте addEventListenerа?