2014-01-25 3 views
0

Я читал о методе onMessage.addListener в Chrome для передачи некоторых данных из расширений в скрипт. То, что я есть сейчас:
popup.jsChrome onMessage не работает (?)

window.onload = function(){ 
    document.getElementById('searchButton').onclick = searchText; 
}; 
function searchText(){ 
    var search = document.getElementById('searchText').value; // f.ex "123" 
    if(search){ 
    chrome.tabs.query({active:true,currentWindow:true},function(tabs){ 
     chrome.tabs.executeScript(tabs[0].id,{file:search.js}); 
     chrome.tabs.sendMessage(tabs[0].id,{method:'search',searchText:search}); 
    }); 
    } 
} 

search.js

chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){ 
    alert('text'); 
}); 

Однако предупреждение ('текст') никогда не увольняют. В чем проблема?

+0

Вы должны указать «search.js» ... –

+0

chrome.tabs.executeScript (вкладки [0] .id, {file: "search.js"}); ? - Это не работает для меня. – Groosha

+0

И поместите вызов 'chrome.tabs.sendMessage' в обратный вызов' chrome.tabs.executeScript'. –

ответ

1

Вы должны цитировать «search.js» и поставить chrome.tabs.sendMessage вызов в обратном вызове chrome.tabs.executeScript:

function searchText(){ 
    var search = document.getElementById('searchText').value; // f.ex "123" 
    if (search) { 
     chrome.tabs.query({active:true,currentWindow:true}, function(tabs) { 
      chrome.tabs.executeScript(tabs[0].id, { 
       file: 'search.js' 
      }, function() { 
       chrome.tabs.sendMessage(tabs[0].id, { 
        method: 'search', 
        searchText: search 
       }); 
      }); 
     }); 
    } 
}

Если это предложение не поможет, inspect the popup и поиска сообщений об ошибках.

+0

Ну, это не помогло мне, но я думаю, что что-то не так с popup.js. Спасибо за помощь! – Groosha

+0

Ну, я не вижу ничего плохого в popup.js. И никаких сообщений об ошибках в инспекторе – Groosha

+0

@ Kondra007 Вы [объявили] (https://developer.chrome.com/extensions/declare_permissions.html) ['activeTab'] (https://developer.chrome.com/extensions/ activeTab.html) в файле манифеста (или, по крайней мере, разрешения хоста для доступа к странице)? Это необходимо для использования 'chrome.tabs.executeScript'. –

Смежные вопросы