带有 url + 选定文本的新选项卡(js,Chrome 扩展名)
New tab with the url + selected text (js, Chrome extension)
我是试图开发 chrome 扩展的设计师。请不要因为回答了这个问题而感到内疚。事实并非如此。这是我想要的:
- 网络上任意页面上的用户 select 文本
- 点击扩展图标
- 新标签打开 url:“http://music.yandex.ru/search?text=”+ text_selected_at_step_1
这段代码显然有效
var seltext = "apparat";
chrome.tabs.create({ url: "http://music.yandex.ru/search?text=" + seltext });
我的问题是我无法将 selected 文本放入变量中。这不起作用:
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
var seltext = getSelectionText();
chrome.tabs.create({ url: "http://music.yandex.ru/search?text=" + seltext });
这也不行,或者我不明白如何将结果与我的 link
相加
chrome.tabs.executeScript( {
code: "window.getSelection().toString();"
}, function(selection) {
document.getElementById("output").innerHTML = selection[0];
});
也不是
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "getSelection")
sendResponse({data: window.getSelection().toString()});
else
sendResponse({}); // snub them.
});
我只想为 selected 文本分配一个变量。看起来任务很明显,但事实并非如此。我认识的所有前端开发人员都没有解决方案。
这是一个基于所选文本打开新选项卡的最小扩展,使用您列出的第二种方法检索当前所选文本(在 Chrome 68 中测试):
manifest.json
:
{
"manifest_version": 2,
"version": "1.0",
"name": "Yandex Searcher",
"browser_action": {
},
"permissions": [
"activeTab"
],
"background": {
"scripts": ["main.js"],
"persistent": false
}
}
main.js
:
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.executeScript({
code: "window.getSelection().toString(); "
}, function(selection) {
chrome.tabs.create({
url: "http://music.yandex.ru/search?text=" + selection[0]
});
});
});
演示:
我是试图开发 chrome 扩展的设计师。请不要因为回答了这个问题而感到内疚。事实并非如此。这是我想要的:
- 网络上任意页面上的用户 select 文本
- 点击扩展图标
- 新标签打开 url:“http://music.yandex.ru/search?text=”+ text_selected_at_step_1
这段代码显然有效
var seltext = "apparat";
chrome.tabs.create({ url: "http://music.yandex.ru/search?text=" + seltext });
我的问题是我无法将 selected 文本放入变量中。这不起作用:
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
var seltext = getSelectionText();
chrome.tabs.create({ url: "http://music.yandex.ru/search?text=" + seltext });
这也不行,或者我不明白如何将结果与我的 link
相加chrome.tabs.executeScript( {
code: "window.getSelection().toString();"
}, function(selection) {
document.getElementById("output").innerHTML = selection[0];
});
也不是
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "getSelection")
sendResponse({data: window.getSelection().toString()});
else
sendResponse({}); // snub them.
});
我只想为 selected 文本分配一个变量。看起来任务很明显,但事实并非如此。我认识的所有前端开发人员都没有解决方案。
这是一个基于所选文本打开新选项卡的最小扩展,使用您列出的第二种方法检索当前所选文本(在 Chrome 68 中测试):
manifest.json
:
{
"manifest_version": 2,
"version": "1.0",
"name": "Yandex Searcher",
"browser_action": {
},
"permissions": [
"activeTab"
],
"background": {
"scripts": ["main.js"],
"persistent": false
}
}
main.js
:
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.executeScript({
code: "window.getSelection().toString(); "
}, function(selection) {
chrome.tabs.create({
url: "http://music.yandex.ru/search?text=" + selection[0]
});
});
});
演示: