因此,随着MyGet推出的CefSharp 75版,改变了方案处理程序处理项目的方式,例如从浏览器下载的项目的文件图标。使用CefSharp 74,我没有问题,因为下载完成后,所有下载的项目都将在我的downloads.html页面上显示其图标,因此现在甚至都不会发生。 downloads.html可以完美加载,但不显示我最近的下载,也不显示其文件图标。下载的项目仍然下载没有问题,但我需要它回到以前的状态。
我尝试使用代码的新的“打开”,“读取”和“跳过”部分来实现IResourceHandler。对其进行编辑以使其与代码兼容,所有内容都可以从我的方案中完美加载,但是没有显示下载项目的文件图标。
旧方案处理程序 //
public bool Open(IRequest request, out bool handleRequest, ICallback callback)
{
handleRequest = false;
return false;
}
public bool Skip(long bytesToSkip, out long bytesSkipped, IResourceSkipCallback callback)
{
bytesSkipped = 0;
callback.Continue(bytesSkipped);
return true;
}
public bool Read(Stream dataOut, out int bytesRead, IResourceReadCallback callback)
{
bytesRead = -1;
return false;
}
新方案处理程序 //
var $container;
var $template;
var timer;
$(document).ready(function () {
$container = $("#downloads-display");
$template = $("#template");
UpdateList();
timer = setInterval(UpdateList, 500);
});
function formatBytes(bytes, decimals) {
if (bytes == 0) return '0 Byte';
var k = 1000;
var dm = decimals + 1 || 3;
var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
var i = Math.floor(Math.log(bytes) / Math.log(k));
return (bytes / Math.pow(k, i)).toPrecision(dm) + ' ' + sizes[i];
}
String.prototype.between = function (prefix, suffix) {
s = this;
var i = s.indexOf(prefix);
if (i >= 0) {
s = s.substring(i + prefix.length);
}
else {
return '';
}
if (suffix) {
i = s.indexOf(suffix);
if (i >= 0) {
s = s.substring(0, i);
}
else {
return '';
}
}
return s;
}
Date.prototype.format = function (format) //author: meizz
{
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
"S": this.getMilliseconds() //millisecond
}
if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
(this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o) if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length == 1 ? o[k] :
("00" + o[k]).substr(("" + o[k]).length));
return format;
}
function getDate(dt) {
return eval("new " + dt.between("/","/"));
}
function UpdateItem(item) {
var $item;
var id = "d" + item.Id;
$item = $("#" + id);
//Add item if it does not exist
if ($item.length == 0) {
$item = $($template[0].outerHTML);
$container.prepend($item);
// show it
$item.removeAttr("hidden");
// add basic stuff
$item.attr("id", id);
$item.find("a.cancel").click(function () {
host.cancelDownload(item.Id);
});
// icon
$item.find("img.icon").attr("src", "codernut://fileicon/" + item.SuggestedFileName);
// name
if (item.SuggestedFileName != "") $item.find("span.name").text(item.SuggestedFileName);
$item.find("a.src-url").attr("href", item.Url).text(item.Url);
$item.find("a.cancel").removeAttr("hidden");
// date
var startTime = Date.parse(item.startTime);
$item.find("div.since").text(startTime.format("MM.dd.yyyy"));
$item.find("div.date").text(startTime.format("hh:mm:ss"));
}
var progress = "";
if (item.IsInProgress) {
progress = formatBytes(item.CurrentSpeed) + "/s - " + formatBytes(item.ReceivedBytes, 2);
if (item.TotalBytes > 0) progress += " of " + formatBytes(item.TotalBytes, 2);
if (item.PercentComplete > 0) progress += " (" + item.PercentComplete + "%)";
} else {
if (item.IsComplete) progress = "Complete";
else if (item.IsCancelled) progress = "Cancelled";
$item.find("a.cancel").attr("hidden","");
}
$item.find("span.status").text(progress);
}
function UpdateList() {
host.getDownloads().then(function (res) {
var list = JSON.parse(res);
$.each(list, function (key, item) {
UpdateItem(item.v);
});
});
}
</script>
Downloads.html代码 //
.primary-menu .sub-menu li a {
transition: 300ms padding ease-in-out;
}
.primary-menu .sub-menu li a:hover {
padding-left: 10px;
}
阿玛特兰(Amaitland)建议的任何事情对我来说都不起作用。