新搜索 URL 未填充

New search URL not populating

我正在构建一个扩展程序,允许您通过上下文菜单搜索 google 新闻以查找所选文本,但所选文本未显示在我的查询中。我错过了什么?

background.js

//creates a context menu When selection is made
contextMenus.createSelectText = chrome.contextMenus.create(
    {"title":"Search for '%s'",
    "contexts": ["selection"],
    "id": "selectedtext"
    });


var searchURL = 'https://news.google.com/search?q=' + window.getSelection().toString();

function searchGoogleForString(url) {
    chrome.tabs.create({url: searchURL});
}
chrome.contextMenus.onClicked.addListener(onRequest);
function onRequest(info, tab) {
    console.log("User clicked Context Menu Search for " + "selectedtext");
    searchGoogleForString(tab["url"]);
}

manifest.json

{
  "name": "Find in Da News",
  "description": "Find a similar article",
  "version": "0.1.1",
  "permissions": [
    "contextMenus",
    "tabs",
    "activeTab"
  ],
  "background": {
    "scripts": ["scripts/background.js"],
    "persistent": true
  },
  "manifest_version": 2,
  "icons": {
    "48": "squatch.png",
    "128": "squatch.png"
  },
  "browser_action": {
    "default_icon": "squatch.png",
    "default_popup": "popup.html"
  }
}

谢谢:)

我让它工作了。必须使用消息传递并添加 JSON.stringify(info.selectionText);如果有人遇到同样的问题,我会这样做:

background.js

var contextMenus = {};
//creates a context menu WHEN selection is made
contextMenus.createSelectText = 
    chrome.contextMenus.create(
        {"title":"Search for '%s'",
        "contexts": ["selection"],

        },
        function (){
        if(chrome.runtime.lastError){
            console.error(chrome.runtime.lastError.message);
        }
    }
);


chrome.contextMenus.onClicked.addListener(sendServiceRequest);

chrome.extension.onRequest.addListener(function(tab){
    chrome.tabs.sendRequest(tab.id, {method: "getSelection"}, function(response){
        sendServiceRequest(response.data);
    });
});

function sendServiceRequest(info, selection) {

    var serviceCall = 'https://news.google.com/search?q=' + JSON.stringify(info.selectionText);
    chrome.tabs.create({url:serviceCall});
    console.log(serviceCall);
}

contentscript.js

chrome.extension.onRequest.addListener(function(request, sender, sendResponse){
    if(request.method == "getSelection")
        else
    sendResponse({});
})