Chrome扩展程序sendMessage从popup.html到content.js不起作用 [英] Chrome Extension sendMessage from popup.html to content.js not working
问题描述
我正尝试构建一个将popup.html的数据发送到Tab圆顶的扩展,但是我无法使sendMessage正常工作,我不明白为什么。
我遵循以下指导原则: https://developer.chrome.com/extensions/ messaging.html
I'm trying to build an Extension which sends data from the popup.html to the tab dome, but I can't get the sendMessage to work and I don't understand why. I'm following this guidline: https://developer.chrome.com/extensions/messaging.html
这里是我的来源:
here are my sources:
manifest:
{
"manifest_version": 2,
"name": "OMG Campaign Preview Maker",
"description": "Easy OMG Campaign Preview Maker",
"background": { "scripts": ["background.js"]},
"version": "0.1",
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["jquery-1.7.min.js", "content.js"]
}
],
"browser_action": {
"default_icon": "logo_128.jpg",
"popup": "popup.html",
"default_popup": "popup.html"
},
"icons": {
"128": "logo_128.jpg"
}
}
popup.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery-1.7.min.js"></script>
<script type="text/javascript" src="popup.js"></script>
</head>
<body>
<h1>Clicks</h1>
<p>extra1:
<input type="text" name="extraclicks[]" id="extra1">
<br>
extra2:
<input type="text" name="extraclicks[]" id="extra2">
<br>
extra3:
<input type="text" name="extraclicks[]" id="extra3">
<br>
<br>
<input type="submit" name="sendclicks" id="sendclicks" value="Invia Clicks">
</p>
</body>
</html>
popup.js
function sendClicks(){
console.log("popup.js > sendClicks()");
var clicksArr = new Array();
$("input[name='extraclicks\\[\\]']").each(function(i, value){
clicksArr.push($(this).val());
});
chrome.tabs.getSelected(null, function(tab) {
console.log("popup.js > tab id: "+tab.id)
chrome.tabs.sendMessage(tab.id, {type:"clicks" },
function(response) {
console.log(response.msg);
}
);
});
console.log("avra' inviato?");
}
$(function(){
console.log("popup.js > OMD Extension ready");
$('#sendclicks').click(function(){sendClicks();});
});
content.js
content.js
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
console.log("content.js > onMessage");
if (request.type == 'clicks') {
console.log("content.js > clicks");
sendResponse({msg: "success"});
}
});
虽然我完全可以在控制台中看到弹出式日志弹出的日志,但是我没有看到由content.js发起的任何日志。
我在做什么错了?
While I can perfectly see the logs gnerated from popup.js in the console, I don't see any of the logs launched by content.js. What am I doing wrong?
推荐答案
好的,我很笨...
错了事情是...我正在看的检查员页面。
console.log内的content.js打印在 TAB INSPECTOR CONSOLE 上,不在扩展名之一!
Ok, I'm stupid... the wrong thing was... the inspector page I was watching. "console.log" inside of the content.js prints on the TAB INSPECTOR CONSOLE not on the extension one!
I希望它能帮助别人。
I hope it will help others.
这篇关于Chrome扩展程序sendMessage从popup.html到content.js不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!