我有一个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()
)在新标签页中打开文件。但我只想下载它,而无需在浏览器中打开。
有什么想法吗?
答案 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);
});
}