execCommand SaveAs在Firefox中工作吗?

为什么这不适用于ff / chrome?

javascript: document.execCommand('SaveAs','true','http://www.google.com'); 

(用作书签)

execCommand在浏览器中并没有完全标准化。 事实上,execCommand('SaveAs',…)似乎只支持IE。 强制保存的推荐方法是使用content-disposition:attachment标头,如http://www.jtricks.com/bits/content_disposition.html中所述;

由于这是HTTP头的一部分,所以可以在任何文件types上使用它。 如果您使用的是Apache,您可以使用.htaccess文件添加标题,如此处所述。 例如:

 <FilesMatch "\.pdf$"> <IfModule mod_headers.c> Header set Content-Disposition "attachment" # for older browsers Header set Content-Type "application/octet-stream" </IfModule> </FilesMatch> 

可以在Firefox中通过数据URI (另请参阅下载数据url文件 )以及可选的下载属性来执行此操作。

请参阅http://html5-demos.appspot.com/static/a.download.html以获取HTML5垫片演示。;

除了更改标题,如何强制保存为Firefox中的对话框? 也涵盖了这个话题。

您也可以通过以下经过Firefoxtesting的演示来testing它。

 <!DOCTYPE html> <body> <script> var a = document.createElement('a'); //alert(a.download === ''); // If true, this seems to indicate support a.setAttribute('download', 'testme.png'); a.href = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAwElEQVQ4jWNgGPRgv7Y2z0lj45STpqbHT5iaxhCt8biBgcJJU9PZJ01MPp80MfkPxZOJN8DEpAFJ4/+TJib/T5mY7CdK8wkTkwJ0zVA8naDmk0ZGPjg0/z9hbGyDV/MZY2ORkyYm77FpPmVispwSp6/e7+DAQtj5pqabsdi8myjNUANmY7H99jEjIxWiDDhuauqCxYDD+7W1eYgy4IyxMetJE5PpyH4/ZWqqTZRmGIAm3fsk2YwOjhkZqZCtmVQAAIOlmIi0XoodAAAAAElFTkSuQmCC'; a.innerHTML = 'testing'; a.style.display = 'none'; document.body.appendChild(a); a.click(); </script> 

以下内容也适用于URL以及不带下载属性的JavaScript启动的加载(尽pipe此方法不允许使用文件名,但允许在新选项卡中进行预览):

 <script> var myText = 'Hello world!', myHTML = '<b>'+myText+'</b>'; function openFile (textToEncode, contentType, newWindow) { // For window.btoa (base64) polyfills, see // https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills var encodedText = window.btoa(textToEncode); var dataURL = 'data:' + contentType + ';base64,' + encodedText; if (newWindow) { // Not useful for application/octet-stream type window.open(dataURL); // To open in a new tab/window } else { window.location = dataURL; // To change the current page } } </script> <h1>Hello world files:</h1> <p>Octet stream type to prompts download dialog in Firefox, but with no default file type or path:</p> <a href="data:application/octet-stream;base64,SGVsbG8sIFdvcmxkIQ%3D%3D"> (text example)</a> <a href="data:application/octet-stream;base64,PGI+SGVsbG8gd29ybGQhPC9iPg=="> (HTML example)</a> <button onclick="openFile(myHTML, 'application/octet-stream');"> (HTML example, from JavaScript)</button> <p>Quickly viewable (and manually savable) in browser but no dialog presented:</p> <a href="data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D">(plain text, same window)</a> <a href="data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D" target="new-tab"> (plain text--in new tab)</a> <a href="data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E">(HTML, same window)</a> <button onclick="openFile(myText, 'text/plain');"> (text example, from JavaScript)</button> <button onclick="openFile(myText, 'text/plain', true);"> (text example, from JavaScript; open in new window)</button> <button onclick="openFile(myHTML, 'text/html', true);"> (HTML example, from JavaScript; open in new window)</button> 

正如微软所说的那样 ,“没有适用于这种方法的公共标准”。

Firefox不支持execCommand。 实际上它似乎只是IE浏览器。