Показать сообщение отдельно
  #3 (permalink)  
Старый 09.12.2017, 13:42
Интересующийся
Отправить личное сообщение для Xopc11 Посмотреть профиль Найти все сообщения от Xopc11
 
Регистрация: 01.07.2017
Сообщений: 25

Я упростил все что только можно и теперь расширение выглядит примерно так:

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й строки) я уже вообще не понимаю ничего...

Последний раз редактировалось Xopc11, 09.12.2017 в 13:46.
Ответить с цитированием