如何在桌面通知窗口中创建下载链接?

时间:2013-04-05 10:03:30

标签: google-chrome-extension

我有一个contextMenu项,它将Ajax请求发送到我网站上的PHP脚本。

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

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

问题是我不能在那里使用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())在新标签页中打开文件。但我只想下载它,而无需在浏览器中打开。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,因为没有任何答案,我会写出来。

要从给定的网址下载文件,您可以使用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);
    });
}