2017-01-17 36 views
0

選択/強調表示されたテキストをテキストエリアにコピーするクロム拡張機能を開発中です。これは私がこれまでに使用したものである:Google Chrome拡張機能+ chrome.windows.create + window.getSelection()。toString()

chrome.tabs.executeScript({ 
    code: "window.getSelection().toString();", 
}, function(selection) { 
    document.getElementById("output").value = selection[0]; 
}); 

しかし、今、私はこの

background.jsのように作成されたウィンドウにpopup.htmlから切り替えた:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.windows.create({ 
     url: chrome.runtime.getURL("window.html"), 
     type: "panel", height: 590, width:850, focused: false 
     }, function(win) { 
    }); 
}); 

これで、選択したテキストをこのウィンドウに表示できなくなりました。また、私はそうのようにやってactivetabの現在のURLをコピー:

chrome.tabs.getSelected(windowId, function(tab) { 
    document.getElementById('url').innerHTML = tab.url; 
    var windowId = tab.id 
}); 

をし、私が使用して新しいウィンドウでこの作品を作ることができる:

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) { 
    document.getElementById('url').innerHTML = tabs[0].url; 
}); 

をだから私の質問は次のとおりです。どのように私は得ることができます新しく作成されたウィンドウ内のテキストエリアにテキストを選択/強調表示しますか?だけでハイライトされたテキストのための

chrome.tabs.query() 

に似何かはありますか?

答えて

0

使用executeScriptのtabIdパラメータは、これらのいずれかを使用してテキストを渡し、クリックされたタブに注入する:

  • messaging
  • URLで
  • chrome.storage.local
  • encodeURIComponent'window.html?url=' + encodeURIComponent(text)
    を、ウィンドウに。 jsはdecodeURIComponentを使います。
  • localStorageは、内部のすべての拡張ページ間で共有される同期ストレージです。最初のページに結果が表示される必要がある場合は遅延/ちらつきがなく、URLにテキストを渡したくない場合があります。

次に、localStorageの例を示します。

  • background.js:

    chrome.browserAction.onClicked.addListener(function(tab) { 
        getSelectedText(tab.id, function(text) { 
         localStorage.selectedText = text; 
         chrome.windows.create({ 
          url: "/window.html", 
          type: "panel", height: 590, width:850, focused: false 
         }); 
        }); 
    }); 
    
    function getSelectedText(tabId, cb) { 
        chrome.tabs.executeScript(tabId, { 
         code: "window.getSelection().toString();", 
        }, function(selection) { 
         cb(selection[0]); 
        }); 
    } 
    
  • window.html:

     ................. 
         <script src="window.js"></script> 
        </body> 
    </html> 
    
  • window.js:

    document.getElementById('url').textContent = localStorage.selectedText || ''; 
    delete localStorage.selectedText; 
    
+0

感謝よあなた!これはまさに私が必要としたものでした。 – rekalar

関連する問題