我有类似的情况(但不愿意完全放弃)。我正在使用 Javascript 构建网页的保存友好版本,我希望用户将其下载为文本文件(在我的情况下为逗号分隔值)。我认为data:
URI 可以在这里提供帮助。
//construct the csvOutput in Javascript first
var popup = window.open("data:application/octet-stream," + encodeURIComponent(csvOutput), "child");
//no need to document.write() anything in the child window
在 Firefox 中,这甚至不会弹出窗口,只是询问用户是否要保存文件,并将其保存为 .part 文件。不完全理想,但至少它可以保存文件而不会弹出不必要的窗口。
或者,我们可以使用 text/plain MIME 类型:
//construct the csvOutput in Javascript first
var popup = window.open("data:text/plain;charset=utf-8," + encodeURIComponent(csvOutput), "child");
在 Firefox 中,这确实会弹出一个新窗口,但默认情况下它会保存为 ASCII 文本,没有父窗口的任何杂物或任何换行。这可能是我将使用的。
看起来这在 IE 中不起作用。IE 8 是唯一支持data:
URI 的版本,并且它对可以使用的位置有一系列限制。对于 IE,您可能会查看execCommand。
感谢这个tek-tip 线程和关于数据 URI 方案的 Wikipedia 文章。