Новый поисковый URL не заполняется - PullRequest
0 голосов
/ 25 октября 2019

Я создаю расширение, которое позволяет искать новости Google по выделенному тексту через contextMenu, но выделенный текст не отображается в моем запросе. Чего мне не хватает?

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"
  }
}

Спасибо:)

1 Ответ

0 голосов
/ 25 октября 2019

Я получил его на работу. Пришлось использовать обмен сообщениями и добавить 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({});
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...