首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在客户端PC上将Javascript变量保存为文件

如何在客户端PC上将Javascript变量保存为文件
EN

Stack Overflow用户
提问于 2013-04-24 16:48:19
回答 3查看 3.6K关注 0票数 3

我会把我的代码放在编辑中..。我很难把我的问题和代码一起提出来。

我维护一个聊天程序,当我被分配给它时,这个程序已经构建好了。我的工作刚开始只是主题,以使它与我们的其他网站。现在管理层要求我提供额外的功能。客户可以选择将聊天日志的副本保存到他们的计算机上。

整个聊天会话存储在名为chatHistoryHTML的javascript变量中,循环将使页面上的聊天会话每5秒更新一次,方法是向chatHistoryHTML变量添加新的文本行,并将其显示在“历史”div中,供客户查看。

现在,我知道如何打开一个新窗口来显示,只显示聊天历史记录,而不显示任何标识、背景或文本输入框。但是,我无法使用我的方法将PHP命令传递到那个新页面。

理想情况下,我想要一个解决方案,让用户点击一个按钮,并有一个保存对话框,只保存聊天会话,而不打开一个新窗口。我现在打开一个新窗口,因为我试图避免保存页面上的所有其他内容。

我愿意接受建议。我知道一些Javascript和PHP,但对AJAX一无所知

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-24 16:51:33

主要选择:

  • 将聊天日志转储到新窗口并调用print() (隔离日志并使其可打印,否则用户也将获取页面上的所有UI元素),或
  • 使用AJAX并将其发送到服务器,然后服务器将其转发回给用户的电子邮件。

JavaScript无法在本地将文件保存到客户端。但是,您有一个次要的选择:

  • 将其迁移到Silverlight/Flash以具有附加的功能/功能。
票数 -1
EN

Stack Overflow用户

发布于 2013-04-24 17:08:34

在客户端,您可以尝试:

代码语言:javascript
复制
var content, MIME_TYPE, theBlob, a;

// What will actually be put into the file
content = "THE FILE CONTENT";

// The file type
MIME_TYPE = "text/plain";
// Basically, the file itself
theBlob = new Blob([content], {type: MIME_TYPE});

// The anchor element
a = document.createElement("a");
// Set the name of the file that will be downloaded
a.download = "Chat_History.txt";
// Set the contents to be downloaded
a.href = window.URL.createObjectURL(theBlob);
// Anchor's text
a.textContent = "Download";

// What's displayed as the URL of the anchor (when hovered, copied, etc.)
a.dataset.downloadurl = [MIME_TYPE, a.download, a.href].join(":");

// Add the anchor to the page
document.body.appendChild(a);

演示: http://jsfiddle.net/oqskpydg/

这确实使用了并非所有浏览器都可用的特性,但这是一个可靠的选择。

参考资料:

票数 10
EN

Stack Overflow用户

发布于 2013-04-24 17:20:40

您可以使用数据URI方案,它比Ian的解决方案更受支持,而且它不依赖于服务器端:

代码语言:javascript
复制
<a href="data:application/octet-stream;base64,PHVsPjxsaT50aGlzPGxpPmlzPGxpPmE8bGk+Y2hhdCBsb2c8L3VsPgo=">Download chat log</a>

您可以使用window.btoawindow.atob来处理base64。

演示。显示框架源,以查看源代码,而不是PasteHTML的包装。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16197706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档