【问题标题】:How can I simulate "CTRL +S" keypress in Javascript如何在 Javascript 中模拟“CTRL + S”按键
【发布时间】:2017-12-14 22:43:56
【问题描述】:

我有一个包含 HTML/JavaScript 代码的页面,当用户按下页面上的导出按钮时,我想将其导出为 HTM 文件。我基本上只需要找到一种方法来触发 Ctrl+S 来执行 Save Page 对话框窗口。我已经搜遍了,似乎找不到任何可以让 JavaScript 模拟按键序列的东西。

TL:DR - 有谁知道如何在 JavaScript/jQuery 中模拟 CTRL+S 按键

【问题讨论】:

标签: javascript jquery


【解决方案1】:

使用saveDocument() 方法。它的文档here

编辑:这只适用于 Firefox。

【讨论】:

  • 我试图像它说的那样实例化类对象。 var webBrowserPersist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);然后尝试了 webBrowserPersist.saveDocument() 但我得到一个错误: Components.classes is undefined
【解决方案2】:

我不认为 Javascript 可以做到这一点。有东西可以打印,但不能保存。

您可以为浏览器创建文件是附件的提示。
您需要发送一些 HTTP 标头。例如,您可以使用 PHP:

header('Content-disposition: attachment');

如果您不想使用 PHP,也许 .htaccess 也可以。你可以查一下。

【讨论】:

  • 我认为这可能是我采取的路线,因为它是我用于正常文件下载的任何方式......如果我能正常工作,我会更新......谢谢
【解决方案3】:

如果您希望浏览器在 DOM 中保存用户页面的更改,这可能超出了 JavaScript 的范围,JavaScript 旨在提供与页面本身的交互,而不是与它工作的环境。

在某些设备上,这甚至可能不适用 - 在 Android 浏览器中保存页面并不是那么简单,而且并非总是可行。

不过,如果您只是在为多个桌面浏览器寻找可行的解决方案,您可以查看 TiddlyWiki,这是一种“本地 wiki”,其内容保存在客户端并保存在这页纸。保存是在 Java不是 JavaScript!)随页面分发的小程序中实现的。一种基于网络的基于浏览器的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    相关资源
    最近更新 更多