Javascript 带有url的新选项卡+;所选文本(js、Chrome扩展)

Javascript 带有url的新选项卡+;所选文本(js、Chrome扩展),javascript,google-chrome-extension,selectedtext,Javascript,Google Chrome Extension,Selectedtext,我是一名试图开发chrome扩展的设计师。这个问题得到了回答,请不要让我感到内疚。事实并非如此。以下是我想要的: 用户在web上的任何页面上选择文本 单击扩展图标 新选项卡将打开,url为:“+文本”在步骤1处选中 这个代码显然有效 var seltext = "apparat"; chrome.tabs.create({ url: "http://music.yandex.ru/search?text=" + seltext }); 我的问题是我无法将所选文本放入变量。这不起作用: func

我是一名试图开发chrome扩展的设计师。这个问题得到了回答,请不要让我感到内疚。事实并非如此。以下是我想要的:

  • 用户在web上的任何页面上选择文本
  • 单击扩展图标
  • 新选项卡将打开,url为:“+文本”在步骤1处选中
  • 这个代码显然有效

    var seltext = "apparat";
    chrome.tabs.create({ url: "http://music.yandex.ru/search?text=" + seltext });
    
    我的问题是我无法将所选文本放入变量。这不起作用:

    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 });
    
    这也不知道或者我不知道如何将结果与我的链接相加

    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.
    });
    

    我只想为所选文本指定一个变量。这看起来是一项显而易见的任务,但事实并非如此。我所认识的所有前端开发人员都没有解决方案。

    这里有一个最小的扩展,它根据所选文本打开新的选项卡,使用您列出的第二种方法检索当前所选文本(在Chrome 68中测试):

    manifest.json

    {
        "manifest_version": 2,
        "version": "1.0",
        "name": "Yandex Searcher",
        "browser_action": {
        },
        "permissions": [
            "activeTab"
        ],
        "background": {
            "scripts": ["main.js"],
            "persistent": false
          }
    }
    
    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]
            });
        });
    });
    
    main.js

    {
        "manifest_version": 2,
        "version": "1.0",
        "name": "Yandex Searcher",
        "browser_action": {
        },
        "permissions": [
            "activeTab"
        ],
        "background": {
            "scripts": ["main.js"],
            "persistent": false
          }
    }
    
    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]
            });
        });
    });
    
    演示:

    {
        "manifest_version": 2,
        "version": "1.0",
        "name": "Yandex Searcher",
        "browser_action": {
        },
        "permissions": [
            "activeTab"
        ],
        "background": {
            "scripts": ["main.js"],
            "persistent": false
          }
    }
    
    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]
            });
        });
    });
    

    .

    您删除此处答案的原因:。这是一个正确有效的方法是的,但你提供了另一种方法。。。我的答案删除了翻译,但你的答案附加了带有翻译的旋转;)因此,它们是不同的方法