10

私は解決策を求めて Web を検索するのに数時間を費やしました。私がやりたいことは、ページ上で強調表示されたテキストを取得し、それをクロム拡張の popup.html のテキストエリアに転送することです。これを実行できる拡張機能の推奨ソース コードを誰かが提供してくれるかどうか疑問に思っていました。

これは、私が見た中で最も適切なスレッドであり、最も役立つと思いました-クエリは似ています。選択したテキストを取得するポップアップのボタン - Chrome 拡張機能

コードをコピーして拡張機能として実行しようとしましたが、強調表示されたテキストが取得されません。誰かがこの問題を解決する方法と提案を持っているかどうか疑問に思っていました. どうもありがとうございました。

4

3 に答える 3

20

リンクした質問への回答と同じように、 Message PassingContent Scripts  を利用する必要があります。ただし、そのコードは 2 年以上前のものであり、 や などの減価償却済みのメソッドを使用していonRequestますgetSelected。新しいAPIに更新するには、いくつかの簡単な変更で十分です。

Popup.html

<!DOCTYPE html> 
<html>
  <head>
    <script src="jquery-1.8.3.min.js"></script>
    <script src="popup.js"></script>
    <style>
      body { width: 300px; }
      textarea { width: 250px; height: 100px;}
    </style>
  </head>
  <body>
    <textarea id="text"> </textarea>
    <button id="paste">Paste Selection</button>
  </body>
</html>

popup.js (インライン コードを持たないようにするため)

$(function(){
  $('#paste').click(function(){pasteSelection();});
});
function pasteSelection() {
  chrome.tabs.query({active:true, windowId: chrome.windows.WINDOW_ID_CURRENT}, 
  function(tab) {
    chrome.tabs.sendMessage(tab[0].id, {method: "getSelection"}, 
    function(response){
      var text = document.getElementById('text'); 
      text.innerHTML = response.data;
    });
  });
}

selection.js

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
  if (request.method == "getSelection")
    sendResponse({data: window.getSelection().toString()});
  else
    sendResponse({}); // snub them.
});

マニフェスト.json

{
 "name": "Selected Text",
 "version": "0.1",
 "description": "Selected Text",
 "manifest_version": 2,
 "browser_action": {
   "default_title": "Selected Text",
   "default_icon": "online.png",
   "default_popup": "popup.html" 
 },
 "permissions": [
   "tabs",
   "<all_urls>"
 ],
 "content_scripts": [
   {
     "matches": ["<all_urls>"],
     "js": ["selection.js"],
     "run_at": "document_start",
     "all_frames": true
   }
 ]
}

ここにソースファイルへのリンクがあります。

于 2013-01-16T04:37:51.343 に答える
7

popup.js

chrome.tabs.executeScript( {
  code: "window.getSelection().toString();"
}, function(selection) {
  alert(selection[0]);
});

マニフェスト.json

"permissions": [
    "activeTab",
],

この単純な拡張機能をご覧ください https://github.com/kelly-apollo/zdic

于 2016-06-16T03:14:28.197 に答える