Chrome内容脚本首先不起作用

时间:2015-10-15 16:32:42

标签: javascript html google-chrome google-chrome-extension content-script

我正在开发Chrome扩展程序。我有一个内容脚本需要注入页面。这是内容脚本,它实际上从事件页面接收消息并将其注入网站然后执行搜索;

   chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse){

    $('[name="q"]').val(msg.searchword);
    $('.btn.btn-success').click();

});

我的活动页面很长,所以我试图给出相关部分。我的活动页面中有一个功能;

function applySearch(search_text) {

使用tabs.query对选项卡进行功能查询。然后在查询的回调中,有一个用于编程注入的大的switch-case语句。这是相关的部分;

case "https://bayi.saroto.com/?p=1", "https://bayi.saroto.com/?p=15":
                console.log("Saroto case içi");
                chrome.tabs.executeScript(tabs[i].id,{"file": "jquery-1.11.3.js", runAt:"document_start" ,allFrames:true}, scriptInCallback(tabs[i].id, "con_saroto_search.js", search_text));

scriptInCallback和messageInCallback函数:

function messageInCallback(tabid, searcher){
    chrome.tabs.sendMessage(tabid, {searchword: searcher});
}
function scriptInCallback(tabid, scriptname, search_text){
    chrome.tabs.executeScript(tabid, {"file": scriptname ,  allFrames: true},
        messageInCallback(tabid, search_text));

这是我的popup.js:

function hello() {
    chrome.runtime.getBackgroundPage(function(page){
        page.applySearch(document.getElementById('aramaKeyword').value);
    });
}

document.getElementById('clickme').addEventListener('click', hello);

显然我的popup.html中有一个文本框和一个按钮

问题是,当我打开弹出窗口并键入搜索词并单击按钮时,即使已经注入了内容脚本(可以从页面的开发人员控制台看到),它也不起作用。它仅在我再次打开弹出窗口时有效,键入关键字并再次单击该按钮。

因此;内容脚本最初不起作用。它在第二个工作。

0 个答案:

没有答案