0

我有一个contextMenu向我网站上的 PHP 脚本发送 Ajax 请求的项目。

PHP 脚本创建一个.txt文件并再次将下载 URL 返回到扩展程序。

下一步Desktop Notification会显示 a,我想在此处放置下载链接,以便用户可以下载创建的文件。

问题是我不能在那里使用 HTML。我不想使用createHTMLNotification已弃用的,所以我的代码是:

var url = 'http://mydomain.com/somefile.txt';

var notification = window.webkitNotifications.createNotification(
    '48.png', 'Click to download', 'Some description');

notification.addEventListener('click', function() { // can't create <a> tag, so I'm tring with a click event. 
    notification.cancel();
    window.open(url);
});

notification.show();

此 ( window.open()) 在新选项卡中打开文件。但我只想下载它,而不是在浏览器中打开。

有任何想法吗?

4

1 回答 1

0

我找到了一个解决方案,由于没有任何答案,我会写下来。

要从给定的 URL 下载文件,您可以使用downloads API's download method

function forceDownload(url) {
    var filename = url.replace(/^.*\/|\.[^.]*$/g, ''); // get basename

    chrome.downloads.download(
        {url: url, saveAs: true}, // options array
        function(id) {
            // callback function
        }
    );
};

在我的情况下forceDownload(),方法在方法中被调用Ajax' done

function exportEntries(info, tab) { 
    var user = 'blah blah';

    $.ajax({
        url: 'http://domain.com/export.php',
        method: 'POST',
        data: { topic: tab.url, user: user }
    }).done(function ( url ) {
        forceDownload(url);
    });
}
于 2013-04-06T05:58:48.773 回答