对于Google Chrome扩展程序,我编写的操作扩展程序popup.html的DOM的Javascript似乎都没有对弹出窗口的DOM产生任何影响。我可以使用content_script.js在浏览器中操作当前网页的DOM,我有兴趣从网页抓取数据并将其输出到扩展弹出窗口,如下所示(下图:popup.html): / p>
<div id="extensionpopupcontent">Links</div>
<a onclick="click()">Some Link</a>
<script type="text/javascript">
function click() {
chrome.tabs.executeScript(null, {file: "content_script.js"});
document.getElementById("extensionpopupcontent").innerHTML = variableDefinedInContentScript;
window.close();
}
</script>
我尝试使用http://code.google.com/chrome/extensions/messaging.html文档中的chrome.extension.sendRequest,但我不确定如何在我的情况下正确使用它,特别是问候语和响应。
contentscript.js
================
chrome.extension.sendRequest({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
答案 0 :(得分:2)
到目前为止,你所做的是正确的。您唯一缺少的是您需要设置一个chrome.extension.onRequest事件监听器来处理从内容脚本返回到弹出窗口的消息。
所以在弹出窗口中做这样的事情应该有效(额外):
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (sender.tab && request.greeting == "hello")
sendResponse({farewell: "goodbye"});
else
sendResponse({}); // snub them.
});
上面的代码片段会做什么,它将侦听来自内容脚本的事件(sender.tab == true,当它来自内容脚本时)。
如果您阅读有关消息传递的整个页面,它会通过很好的示例解释所有这些: http://code.google.com/chrome/extensions/messaging.html