【问题标题】:Write text content to a new window (or change the type of content from html to text)?将文本内容写入新窗口(或将内容类型从 html 更改为文本)?
【发布时间】:2011-07-01 18:59:40
【问题描述】:

如何准备好便于用户保存的文本内容?

document.write("this text must be saved")

几乎完成了工作,但是页面的内容被浏览器感知为html,并将保存为html。可以改成text/plain吗?

我知道我可以用 "data:" uri 生成它,但是没有办法指定默认文件名。

谢谢。

【问题讨论】:

    标签: javascript html firefox opera


    【解决方案1】:

    你有没有尝试过

    document.open('text/plain');
    document.write('Save me');
    

    ?虽然我真的不明白这在尝试保存时如何暗示文件名。您似乎在这里绘制了新的(并且非常未指定的)领域。

    【讨论】:

    • 是的,伙计!这就对了。它至少适用于 Firefox。我可以将它与 history.pushState("","", "newTitle.csv");在发送代码之前更改标题。谢谢。
    • 嗯,我不是 100% 确定建议使用 history.pushState() 的文件名应该工作;)但至少你可以享受找到解决方案虽然它持续..
    • text/plain with document.open 似乎不受 Safari 或 Chrome 的支持。
    • 它是在 HTML5 中指定的,所以大概他们会希望在某个时候支持它:html.spec.whatwg.org/multipage/… - 但我明白为什么它不被认为是一个重要的细节:)
    【解决方案2】:

    将此标头添加到响应中:Content-Type: text/plain

    【讨论】:

    • 我实际上需要一个纯粹在客户端使用 javascript 的解决方案。使用 document.write(" some text " ) 没有给出预期的结果。还是我错过了什么?
    • 当它转到 document.write 时,浏览器已经通过查看标题或通过 mime 嗅探或恢复为默认值来确定 mime 类型。
    【解决方案3】:

    这样就可以了

    Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
    

    希望对你有帮助。

    【讨论】:

    • 这将显示文件下载对话框。该页面不会呈现为文本。
    • 关于如何仅在客户端执行此操作的任何想法?谢谢。
    • 不,我不这么认为,您必须从服务器设置标头并从那里发送数据,这将导致一个选项卡打开并出现下载窗口,然后选项卡将自动关闭。
    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多