Chrome壁纸API适用于某些图像,不适用于其他图像,没有明显的原因
Chrome wallpaper API works with some images, not with others, no apparent reason
我写了一个快速的小chrome扩展程序,它从壁纸深渊中抓取随机图像并将其设置为chrome os壁纸。这是manifest.json:
{
"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"
]
}
和背景.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 规范),则没有错误,回调和所有console.log
都很好,但壁纸不会改变。我不知道问题是什么,因为似乎没有什么"错误",甚至代码发生了不同的事情,但预期的出现确实发生了变化。
编辑:更改了代码以反映Tibrogargan的答案,并且console.log(index)
语句每次打印不同的数字,但相同的问题仍然存在。
你总是得到返回列表的相同元素 ( url:data.wallpapers[>>> 1 <<<].url_image
)。 当您使用随机时,该图像几乎总是不同的。 当您使用类别(例如)时,该图像几乎每次都是相同的图像。
唯一可以按您想要的方式工作的情况是在 alphacoders API 调用中使用"随机"方法。 如果您希望从非随机方法中获得相同的行为,则需要实现一些东西来从返回的列表中随机选择图像。
将索引替换为变量:
var index = Math.floor(Math.random() * data.wallpapers.length);
...
url:data.wallpapers[index].url_image
...
filename:data.wallpapers[index].id...
甚至更好:
var wallpaper = data.wallpapers[Math.floor(Math.random() * data.wallpapers.length)];
...
url:wallpaper.url_image,
...
相关文章:
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- PHP中的setcookie仅适用于localhost
- html5 drawImage适用于firefox,而不是chrome
- 提供“;onClick"适用于iPad(触摸屏)和桌面用户的默认功能
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- ResolveUrl是否适用于././也
- Firebase updateChildValues适用于IOS,但不适用于Web和Android
- JavaScript警报适用于int,但不适用于string
- SQLite插件适用于Mac和Windows,但不适用于手机上的Safari
- Regex Replace仅适用于Last Match
- window.onload适用于aspx页面,但不适用于普通html
- 在 javascript 中更改图像 .style 仅适用于 Firefox
- 在上传之前在页面上预览图像,它适用于除IE之外的所有浏览器
- 如何在不丢失Jssor图像滑块的情况下更改其尺寸'其响应特性、图像纵横比等仅适用于iPhone设备
- 按钮内部的jQuery加载程序图像仅适用于Chrome
- 使用jQuery更改showcase图像源仅适用于Chrome
- 在parse.com中插入图像'它适用于类user
- Chrome不从javascript预加载图像.适用于IE, FF
- Javascript调整大图像大小仅适用于F5之后
- 背景图像悬停类适用于Firefox,但不适用于Chrome/Safari