新搜索 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({});
})
我正在构建一个扩展程序,允许您通过上下文菜单搜索 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({});
})