Я упростил все что только можно и теперь расширение выглядит примерно так:
ContentScripts.js
chrome.extension.sendMessage('ContentScript', function(backMessage){
alert('2. Обратно принято из фона: ' + backMessage);
});
background.js
$.ajax({ // Запрос к бд
url:"http://mysite/background.php", // Запрос к бд
type:"POST", // Запрос к бд
data:({url:info.url)}), // Запрос к бд
dataType:"text", // Запрос к бд
success: function(data){ // Ответ бд
if (data.substring(0,4)=="true"){ // Если url есть в бд получает ответ от сервера
var x = data.substring(data.indexOf("X")+1,); // Достаю из ответа X
alert("ПЕРВЫЙ АЛЕРТ X="+x);
chrome.extension.onMessage.addListener(function(request, sender,f_callback){
if(request=='ContentScript'){ //проверяется, от того ли окна и скрипта отправлено
alert("ВТОРОЙ АЛЕРТ X="+x);
f_callback("X="+x); //обратное сообщение
}
});
}
}
});
ps в background.js в самом начале стоит chrome.tabs.onUpdated.addListener т.е. ajax срабатывает всегда при обновлении страницы. Так я беру текущий url и отправляю его в bd.
В результате получаю:
Первый прогон:
ПЕРВЫЙ АЛЕРТ X=1
ВТОРОЙ АЛЕРТ X=1
2. Обратно принято из фона: X=1
Второй прогон на другой странице:
ПЕРВЫЙ АЛЕРТ X=2
ВТОРОЙ АЛЕРТ X=1
2. Обратно принято из фона: X=1
ВТОРОЙ АЛЕРТ X=2
Т.е. получается что первый раз скрипт сработал с начала и ajax прошел до конца и chrome.extension.onMessage взял X правильно. Но во второй раз скрипт начинает работать сразу с 2х мест (с начала и с 10й строки) я уже вообще не понимаю ничего...
![Blink](images/smilies/blink.gif)