我正在尝试编写一个代码来绑定click事件上的save as选项。我不想使用filesaver.js。我想要纯JavaScript来编写这段代码。
答案 0 :(得分:1)
HTML5标准引入了File API,它应该允许脚本提供“文件”(Blob)供用户保存。然而,支持是伪劣的,这就是为什么存在像FileSaver.js这样的polyfill。 Filesaver.js也是“纯粹的”javascript,所以我不确定为什么需要一个纯粹的javascript解决方案来排除它的使用(除非你的意思是你不能加载外部脚本 - 只需缩小和内联它(以及许可证等)。 ))现在,如果您必须自己编写代码,那么您提出的任何跨浏览器解决方案都可能是对polyfil的有效重写。
一旦实现saveAs()
,只需将其附加到您喜欢的任何事件触发器上:
myButton.addEventListener( 'click', function() { window.saveAs( fileBlob, 'filename.txt' ) } );
澄清:根据活动上的W3C spec,所有不受信任的事件(包括按键事件)就像调用了event.preventDefault()
一样 - 所以有显式无法模拟实际的 ctrl + s 按键 - 只能模拟其效果。
答案 1 :(得分:0)
你可以这样做:
var isCtrlPressed = false;
function onKeyDown(event) {
if (event.keyCode == 17) { // Control got pressed
isCtrlPressed = true;
}
if (event.keyCode == 83) { // "s" got pressed
// if control is pressed too execute some code
if (isCtrlPressed) {
// Your code here
}
}
}
function onKeyUp(event) {
if (event.keyCode == 17) { // Control got pressed
isCtrlPressed = false;
}
}
然后在您的身体标签上添加以下事件:
<body onkeydown="onKeyDown(event)" onkeyup="onKeyUp(event)">
</body>
您可以在此处找到lifedemo: http://jsbin.com/eBIRAfA/1/edit