SendMessageは新しいタブコンソールでは機能しません。ポップアップからローカルindex.htmlで新しいタブを開き、メッセージを送信します
メッセージが開いたばかりのタブにメッセージが届きません。
コンソールに何も表示されません。以下は
私は
Manisfest.json
{
"name": "SYSHP",
"version": "1.0",
"description" : "SYSHP",
"manifest_version": 2,
"permissions": [ "http://*/", "tabs", "activeTab", "notifications", "background" ],
"background": {
"scripts": [
"background.js"
]
},
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"content.js",
"lib/jquery.min.js"
],
"run_at": "document_end"
}
],
"icons": {
"128": "icon128.png",
"48": "icon48.png"
},
"browser_action": {
"default_icon": "icon128.png",
"default_title": "SYSHP",
"default_popup": "popup.html"
}
}
popup.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>SYSHP</title>
</head>
<body>
<button id="preparaLista">Preparar Lista</button>
<button>Download</button>
</body>
<script src="lib/jquery.min.js"></script>
<script src="popup.js"></script>
</html>
popup.js
var url = ('chrome-extension://' + chrome.i18n.getMessage('@@extension_id') + '/index.html');
document.getElementById("preparaLista").addEventListener("click",handleClick);
function handleClick(){
chrome.tabs.create({ url: url }, function(tab) {
chrome.tabs.sendMessage(tab.id, {type: "action_example"});
});
}
インデックスを使用していますフォーマット内のすべてのファイルです.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>SYSHP</title>
</head>
<body>
</body>
<script src="lib/jquery.min.js"></script>
<script src="content.js"></script>
</html>
content.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
console.log("received message from popup: "+request.type);
});
こんにちは、タブが実行されているが、メッセージが送信されていません。 –
これは通常のファイルをロードしています。しかし、メッセージはコンソールに表示されません。 tks –
*あなたが**必要な場合を除いて**すべての**ページ(あなたの 'matches'で' content_scripts')にjQueryをロードしないでください。 jQueryは最小化されたコードの85キロバイトです。これは、すべての単一ページ*に鞍を打つことに重大な負担です。タブが100個開いている私たちの何人か? jQueryをロードするには本当に必要なのですが、バニラJavaScriptを使用しないことで、あなた自身のコードに数百/数百文字を保存する便利性のためにそうする可能性が高くなります。そのような場合(私たちは知る方法がありません)、そうすることは、あなたのユーザの視点からは非常に貧弱なトレードオフです。 – Makyen