2

假设我有 div 的动态内容:

//a button to click, or something
<button type="button">Download Content as a .doc</button>

//Div to be downloads as .div
<div class="gc"> //Generated content
   <h1>A Header</h1>
   <p>A Paragraph</p>
   <ul><li>A</li><li>List</li><li>Here</li></ul>
</div>

您可以建议哪些方法在不使用服务器端帮助的情况下解决此问题?我对 JS 持开放态度,因为我目前正在学习这个,并且可以使用 Jquery 访问 div,只是寻找一个简单的答案或提示正确的学习方向。

希望它与在 div 中显示 pdf 一样简单,例如this,但我不知道。

对于我的特殊情况,内容可以格式化或不格式化,作为对象放置在 word 或其他一些古怪的解决方法中,或者可能使用常见的浏览器扩展。最终,我只想能够为用户提供内容的 .doc(可能是 .docx)版本。

如果我必须使用服务器端功能,是否有任何好的链接可以帮助我了解解决方案?因为我不知道 AJAX 或 PHP,但我愿意学习!

4

3 回答 3

4

如果没有某种可以发送正确标头的服务器端事物,这是不可能的。

您可以将 .html 文件重命名为 .doc,word 会吃掉它,但您仍然需要一些 PHP,或者任何服务器端语言是您选择的药物来发送内容处置下载标签和内容类型 application/vnd -ms-word 标题。

由于明显的安全风险,这对于纯 JavaScript 是不可能的。

于 2012-08-04T16:37:58.620 回答
2

使用 blob 构建器和对象 URL 的 HTML5 可以部分实现。困难的部分是生成一个与单词兼容的文件,作为练习留给读者:

// normalize vendor extensions
window.BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder;
window.URL = window.URL || window.webkitURL;

// create the file and append contents to it
var blobthebuilder = new BlobBuilder();
blobthebuilder.append("some text");

// create a URL for the newly created file with a mime
// type and make the anchor point to it
anchor.href = window.URL.createObjectURL(blobthebuilder.getBlob("text/html"));​

Webkit 还支持a[download]自动下载文件而不需要左键单击 → 另存为...

jsFiddle上的演示。

于 2012-08-04T16:56:55.470 回答
0

我认为如果没有通过 AJAX 编写的一些服务器端脚本,你就无法做到这一点。

如果您使用 php,则通过 AJAX 发送并作为文本文件发送回下载会很简单。然后您只需要找到一个可以将其转换为 .doc 文件的脚本,因为这是一种复杂的格式。

但是我不确定 HTML5 有很多新功能。

编辑:好的,我可以看到 SchizoDuckie 以 1 分钟的优势击败了我,哈哈 :o)

于 2012-08-04T16:39:47.393 回答