Javascript 什么是';二进制';在chrome.wallpaperapi中?
我想使用api将用户上传的图像设置为壁纸 我使用JavaScript成功地将上传的文件转换为ArrayBuffer,但在“data”键中使用该文件会导致类似于以下内容的错误消息:Javascript 什么是';二进制';在chrome.wallpaperapi中?,javascript,google-chrome,google-chrome-app,Javascript,Google Chrome,Google Chrome App,我想使用api将用户上传的图像设置为壁纸 我使用JavaScript成功地将上传的文件转换为ArrayBuffer,但在“data”键中使用该文件会导致类似于以下内容的错误消息: "Invalid value for argument 1. Property 'data': Expected 'binary' but got 'object'." 我使用new blob()将ArrayBuffer转换为blob,但得到了相同的错误。将其转换为字符串会导致相同的错误,但将“object”替换为“
"Invalid value for argument 1. Property 'data': Expected 'binary' but got 'object'."
我使用new blob()将ArrayBuffer转换为blob,但得到了相同的错误。将其转换为字符串会导致相同的错误,但将“object”替换为“string”
到目前为止,在谷歌上搜索没有任何结果。在这种情况下,二进制格式是什么?我将如何发送它
清单肯定有墙纸属性,我也可以通过URL设置墙纸。二进制是我唯一面临的问题
以下是我目前的代码:
app.js:
reader.addEventListener('load', function() {
chrome.runtime.sendMessage({
'action': 'new_wallpaper',
'wallpaper_data': reader.result // I've also tried new Blob([reader.result])
}, function(response) {
console.log(response);
});
}, false);
reader.readAsArrayBuffer(file);
background.js:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if(request.action == 'new_wallpaper') {
chrome.wallpaper.setWallpaper({
'data': request.wallpaper_data,
'layout': 'CENTER_CROPPED',
'filename': 'Wallpaper Manager',
'thumbnail': true
}, function(thumbnail) {
sendResponse(thumbnail);
});
}
return true;
});
显示您使用的代码您可以包括
manifest.json
和完整的javascript
吗?请参阅@PatrickEvans Updated。您应该在onMessage侦听器中记录result.wallpaper\u数据。通过“应该是一个JSON ifiable对象”传递的对象,因此您的数据可能会转换为您不期望的内容。我认为此分支可以帮助您