0

次の拡張機能が機能しない理由を教えてください。インライン スクリプトを script src=" ..." /script に置き換えようとしましたが、それでも機能しません。コンテンツ スクリプトに両方の JavaScript をリストするか、両方を削除する方がよいでしょうか?

POPUP.html

<!DOCTYPE html> 
<html>
<head>
<style>
  body { width: 300px; }
  textarea { width: 250px; height: 100px;}
</style>
<script>
  function pasteSelection() {
  chrome.tabs.getSelected(null, function(tab) {
  chrome.tabs.sendRequest(tab.id, {method: "getSelection"}, function (response) {
  var text = document.getElementById('text'); 
  text.innerHTML = response.data;
    });
  });
 }
</script>
</head>
<body>
<textarea id="text"> </textarea>
<button onclick="pasteSelection(); ">Paste Selection</button>
</body>
</html>

selection.js

chrome.extension.onRequest.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",
 "browser_action": {
 "default_title": "Selected Text",
 "default_icon": "online.png",
 "default_popup": "popup.html" 
},
 "permissions": [
 "tabs",
 "chrome://favicon/",
 "http://*/*", 
 "https://*/*"
],
 "content_scripts": [
{
"matches": ["http://*/*"],
"js": ["selection.js", "paste.js"]
"run_at": "document_start",
"all_frames": true
}
]
}
4

1 に答える 1

0

インラインコードを使用することはできず、いくつかの減価償却方法を使用しています。すべてのインラインコードを外部ファイルに移動しないことが問題の原因である可能性がありますが、とにかく減価償却されたメソッドを使用することは適切ではありません。修正すると、次のようになります。

Popup.html

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

Popup.js

window.onload = function() {
  var pasteButton = document.getElementById("pasteButton");
  pasteButton.onclick = function(){
    chrome.tabs.query({active:true,currentWindow:true}, 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.
});

Manifest.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",
   "chrome://favicon/",
   "http://*/*", 
   "https://*/*"
 ],
 "content_scripts": [{
   "matches": ["http://*/*"],
   "js": ["selection.js", "paste.js"],
   "run_at": "document_start",
   "all_frames": true
 }]
}
于 2013-03-21T18:18:30.003 に答える