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

Сообщение от Aetae Посмотреть сообщение
У тебя на каждый onUpdated происходит ajax зпрос и как только он закончен, назначается ещё один обработчик onMessage, старый при этом никуда не девается. При этом возврат результата в хроме работает только для первого назначенного обработчика, остальные отрабатывают только внутри background ничего назад не передавая.
Т.е. через десять апдейтов у тебя висит десять одинаковых
chrome.extension.onMessage.addListener(function(request, sender,f_callback){
    if(request=='ContentScript'){ //проверяется, от того ли окна и скрипта отправлено
    alert("ВТОРОЙ АЛЕРТ   X="+x);  
    f_callback("X="+x); //обратное сообщение
   })

При этом каждый их них хранит в замыкании результат своего ajax вызова.
Не нужно так делать.)

Что тебе нужно, это:
chrome.extension.onMessage.addListener(function(request, sender,f_callback){
  if(request=='ContentScript'){ //проверяется, от того ли окна и скрипта отправлено
    $.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
          f_callback("X="+x); //обратное сообщение
        }else{
          f_callback(false); //обратное сообщение      
        }
      }
    })
    return true
  }
})
без всяких onUpdate
Я так тоже делал. Результат одинаковый. Всегда отправляется только первое сообщение.
Ответить с цитированием