2012-11-11 129 views
0

我想创建一个扩展,其中内容脚本将消息发送到后台页面,然后在浏览器动作意味着点击扩展图标将访问该背景页面,并获得一些data.I使用铬版本23.0.1271.64 m在windows8上。消息传递铬扩展

我收到以下错误。 端口错误:无法建立连接。接收结束不存在。

我试图解决相同的问题。但人们正在使用chrome20 +不支持的sendRequest。我还发现铬20+的解决方案。但不工作。请帮忙。

以下是文件内容。

的manifest.json

{ 
    "name": "Test Extension", 
    "version": "1.0", 
    "manifest_version": 2, 
    "description": "A test extension.", 
    "background": "background.html", 
    "content_scripts": [ 
    { 
     "matches": ["<all_urls>"], 
     "js": ["jquery.js","content.js"] 
    } 
    ], 
"permissions": ["tabs", "http://*/", "https://*/"], 
    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    } 
} 

background.html

<html> 
<head> 
    <script src="background.js"></script> 
</head> 
<body> 
    <h1>Wy</h1> 
</body> 
</html> 

background.js

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) { 
    // Chrome 20+ 
    alert(request); 
    console.log('received in listener'); 
    sendResponse({farewell: "goodbye"}); 

}); 

个content.js

$(function(){ 
console.log('start-sending message'); 

chrome.extension.sendMessage({greeting: "hello"},function(response){alert(response);}); 

console.log('end-sending message'); 
}); 

popup.html

<!doctype html> 
<html> 
    <head> 
    <title>Getting Started Extension's Popup</title> 
    </style> 

    <!-- JavaScript and HTML must be in separate files for security. --> 
    <script src="jquery.js"></script> 
    <script src="popup.js"></script> 

    </head> 
    <body> 
    </body> 
</html> 

popup.js

$(function(){ 
    var str_html = "<tr><td width='60%'>S</td><td width='40%'>15</td></tr><tr><td width='60%'>M</td><td width='40%'>25</td></tr>"; 
    $('#sizes_container').html(str_html); 
    var bkg = chrome.extension.getBackgroundPage(); 
    console.log(bkg); 
}); 

回答

0

你用错误的新签名混合弃用"background_page"财产"background"。使用background pages正确的方法是:

"background": { 
    "scripts": ["background.js"] 
} 

您可以完全摆脱掉你的background.html,因为它没有用处(如果你真的需要它,使用"background": {"page": "background.html"})(您<body>是未使用的内容)。

关于sendRequest,它确实已被弃用,但尚未删除(尚未)。

关于您的弹出页面:您没有任何ID为sizes_container的元素,所以您显然不会看到任何输出。

相关问题