为了账号安全,请及时绑定邮箱和手机立即绑定

新搜索 URL 未填充

新搜索 URL 未填充

杨__羊羊 2021-12-02 19:25:59
我正在构建一个扩展程序,允许您通过 contextMenu 在谷歌新闻中搜索所选文本,但所选文本未显示在我的查询中。我错过了什么?背景.js//creates a context menu When selection is madecontextMenus.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"  }}谢谢 :)
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

我让它工作。不得不使用消息传递并添加 JSON.stringify(info.selectionText); 这是我所做的,以防万一有人遇到同样的问题:


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

}

内容脚本.js

chrome.extension.onRequest.addListener(function(request, sender, sendResponse){

    if(request.method == "getSelection")

        else

    sendResponse({});

})


查看完整回答
反对 回复 2021-12-02
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信