有没有一种方法可以使用 addEventListener 将内容可编辑的内容自动保存到 sqlite 数据库中?
Is there a way to autosave contenteditable content to a sqlite-database with addEventListener?
我正在用 Electron 构建一个简洁的文本编辑器,并希望自动保存在 <div id="editor" contenteditable="true">
中输入的所有内容。如何做到这一点?
目前,只需单击一个按钮即可进行保存,相当简单:
document.getElementById("saveChanges").onclick = function() { }
我试图将上面的行更改为:
document.addEventListener('keydown', function(e) {
for (var i = 0; i < editor.length; i++)
这行不通,但我也不知道为什么不行。它不会给出任何错误,但也不会执行任何操作。
我做错了什么?
// This is the code that doesn't work
document.addEventListener('keydown', function(e) {
for (var i = 0; i < editor.length; i++)
{
let content = document.getElementById("editor").innerHTML;
console.log(content);
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./appdata/resources/protodatabase.evv');
let sql = 'UPDATE Subchapters SET subtext=? WHERE subid=1';
db.run(sql, content, function (err) {
console.log();
if (err) {
return console.error(err.message);
}});
db.close();
};
});
其实我自己想出来了:
var editable = document.getElementById('editor');
editable.addEventListener('keydown', function(e) {
// execute code when spacebar or enter is pressed
var toets = e.keyCode;
if (toets == 32 || toets == 13)
这个效果很好。但是代码非常非常占用磁盘空间。需要弄清楚如何将数据库放在内存中,在那里进行所有更改并定期将其保存到磁盘上的数据库...
我正在用 Electron 构建一个简洁的文本编辑器,并希望自动保存在 <div id="editor" contenteditable="true">
中输入的所有内容。如何做到这一点?
目前,只需单击一个按钮即可进行保存,相当简单:
document.getElementById("saveChanges").onclick = function() { }
我试图将上面的行更改为:
document.addEventListener('keydown', function(e) {
for (var i = 0; i < editor.length; i++)
这行不通,但我也不知道为什么不行。它不会给出任何错误,但也不会执行任何操作。
我做错了什么?
// This is the code that doesn't work
document.addEventListener('keydown', function(e) {
for (var i = 0; i < editor.length; i++)
{
let content = document.getElementById("editor").innerHTML;
console.log(content);
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./appdata/resources/protodatabase.evv');
let sql = 'UPDATE Subchapters SET subtext=? WHERE subid=1';
db.run(sql, content, function (err) {
console.log();
if (err) {
return console.error(err.message);
}});
db.close();
};
});
其实我自己想出来了:
var editable = document.getElementById('editor');
editable.addEventListener('keydown', function(e) {
// execute code when spacebar or enter is pressed
var toets = e.keyCode;
if (toets == 32 || toets == 13)
这个效果很好。但是代码非常非常占用磁盘空间。需要弄清楚如何将数据库放在内存中,在那里进行所有更改并定期将其保存到磁盘上的数据库...