Я написал небольшое небольшое хромированное расширение, которое захватывает случайное изображение с Wallpaper Abyss и устанавливает его на хром os обои. Здесь manifest.json:Chrome wallpaper API работает с некоторыми изображениями, а не с другими, без видимых причин.
{
"manifest_version": 2,
"name": "Abyss Wallpapers for Chrome OS",
"description": "Sets the Chrome OS wallpaper to a random wallpaper from the
Wallpaper Abyss (wall.alphacoders.com), once a minute",
"version": "1.0",
"background":
{
"scripts":["jquery-2.2.1.min.js","background.js"]
},
"permissions": [
"wallpaper",
"https://wall.alphacoders.com/api2.0/",
"background"
]
}
И background.js:
var baseUrl = "https://wall.alphacoders.com/api2.0/get.php?";
var apiKey = "...";
var params = "auth=" + apiKey + "&method=random";
var interval = 20000;
var XHRinProgress = false;
function doXHR()
{
console.log("Fired doXHR()...");
if (XHRinProgress)
{
console.log("Another XHR is already in progress...");
console.log("Exiting...");
return;
}
XHRinProgress = true;
$.get(baseUrl + params, function(data, status)
{
console.log("Entering XHR callback...");
if (status == "success")
{
console.log("XHR connected successfully...");
if (data.success)
{
console.log("Got successful response from the server...")
var index = Math.floor(Math.random() * data.wallpapers.length);
console.log(index);
console.log("Now setting wallpaper...")
chrome.wallpaper.setWallpaper
(
{url:data.wallpapers[1].url_image,
layout:"CENTER_CROPPED",
filename:data.wallpapers[index].id + "." + data.wallpapers[index].file_type},
function()
{
console.log("Enjoy your new wallpaper!")
XHRinProgress = false;
}
)
}
else
{
console.log("Server returned error...");
console.log(data.error);
}
}
else
{
console.log("Error in XHR...");
}
}, "json");
}
console.log("Let's do this...");
console.log("Setting function doXHR to run every " + interval + " milliseconds...");
setInterval(doXHR, interval);
Это работает отлично. Но если я изменю запрос, скажем, method=category&id=3
(api spec по предоставленной ссылке), ошибок нет, обратные вызовы и все console.log
проходят очень хорошо, но обои не меняются. Я понятия не имею, в чем проблема, поскольку ничего не кажется «неправильным» или даже что-то другое произошло с кодом, но ожидаемый результат меняет.
EDIT: изменил код, чтобы отразить ответ Tibrogargan, а оператор console.log(index)
печатает различное количество раз каждый раз, но та же проблема сохраняется.