猿问

新搜索 URL 未填充

我正在构建一个扩展程序,允许您通过 contextMenu 在谷歌新闻中搜索所选文本,但所选文本未显示在我的查询中。我错过了什么?


背景.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"]);

}

清单文件.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"

  }

}


谢谢 :)


杨__羊羊
浏览 177回答 1
1回答

ITMISS

我让它工作。不得不使用消息传递并添加 JSON.stringify(info.selectionText); 这是我所做的,以防万一有人遇到同样的问题:背景.jsvar contextMenus = {};//creates a context menu WHEN selection is madecontextMenus.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);}内容脚本.jschrome.extension.onRequest.addListener(function(request, sender, sendResponse){    if(request.method == "getSelection")        else    sendResponse({});})
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答