Cefsharp 75中的已下载项目不再显示图标

时间:2019-07-08 18:02:21

标签: c# cefsharp

因此,随着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)建议的任何事情对我来说都不起作用。

0 个答案:

没有答案