我正在创建一个具有下载文件按钮的扩展名。该文件是使用从chrome的localStorage检索的内容创建的。
在panel.html中,我有以下代码:
<!DOCTYPE html>
<html>
<body>
<button id="btnDownload">Download</button>
<script src="messaging.js"></script>
<script src="panel.js"></script>
</body>
</html>
Panel.js有以下事件侦听器:
document.querySelector('#btnDownload').addEventListener('click', function() {
sendObjectToInspectedPage({action: "download"});
});
sendObjectToInspectedPage函数在messaging.js中
function sendObjectToInspectedPage(message) {
message.tabId = chrome.devtools.inspectedWindow.tabId;
chrome.extension.sendMessage(message);
}
在我的background.js文件中,我有以下代码:
chrome.extension.onConnect.addListener(function (port) {
var extensionListener = function (message, sender, sendResponse) {
if(message.tabId && message.content) {
if(message.action === 'download') {
var aFilePart = ['<a id="a"><b id="b">Hi :) !</b></a>'];
var blob = new Blob(aFilePart, {type : 'text/html'});
var url = URL.createObjectURL(blob);
chrome.downloads.download({
url: url
});
//Pass message to inspectedPage
} else {
chrome.tabs.sendMessage(message.tabId, message, sendResponse);
}
// This accepts messages from the inspectedPage and
// sends them to the panel
} else {
port.postMessage(message);
}
sendResponse(message);
}
// Listens to messages sent from the panel
chrome.extension.onMessage.addListener(extensionListener);
port.onDisconnect.addListener(function(port) {
chrome.extension.onMessage.removeListener(extensionListener);
});
});
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
return true;
});
当单击“下载”按钮时,我希望生成包含我传递的内容的文件,并将该文件下载到我的计算机,但这不起作用。
我做错了什么吗?有什么东西不见了吗?
谢谢
发布于 2018-01-25 15:17:26
您应该使用“运行时”在messaging.js中发送消息
chrome.runtime.sendMessage(message);
另外,在你的背景脚本中,这不是必需的,
chrome.extension.onConnect.addListener()
下面是一个简单的例子
function popupMsg(message) {
if (message.action == "download") {
//Do Something
} else {
//Something else
}
}
chrome.runtime.onMessage.addListener(popupMsg);
https://stackoverflow.com/questions/48408420
复制相似问题