CSDN Markdown编写博客 内容丢失怎么办?
被CSDN 的Markdown吃掉两篇文章,一怒之下,花了半天时间,终于让我找到方法挽救丢失的文章了。
适用场景:
把博客编辑当成了编写新博客,覆盖掉了老博客,无法返回。
浏览器不崩溃,返回Markdown,编写内容全没了。
编写新博客A中,关闭页面,然后打开新的编写新博客B页面,覆盖掉了已编写的A内容。
还没遇见其他情况。。。。
已测试,此方法在chrome和safari浏览器中有效,理论上其他浏览器应该也可行。
此方法支持跨浏览器,也就是在A浏览器编写文章丢失,可以再B浏览器中使用此方法找回
这里以Chrome 为例。
Step 1
打开一个新的发布文章页面,编辑页面也行。
在这里插入图片描述
Step 2
打开开发者工具,然后切换到Application中(safari中是切换到存储空间),主要用到Strorage中的IndexedDB。在IndexedDB中可以找到你丢失的博客内容,找到你需要找回的那条数据,记住key值。
在这里插入图片描述
注意看text里的内容,有些是浏览版,有些是Markdown编辑版,最好找Markdown版本,可以直接复制重新发布博客。
Step 3
复制下列JS代码,依据你IndexedDB,修改idb配置
var idb={
name:'stackedit-db',//数据库名
version:1,//版本号
store:'objects',//仓库名
db:null
}
function open(){
var r=indexedDB.open(idb.name,idb.version)
r.onsuccess = function (event) {
idb.db = r.result;
console.log('数据库打开成功');
};
}
function read(key) {
var store=idb.store;
var transaction = idb.db.transaction([store],'readonly');
var objectStore = transaction.objectStore(store);
var request = objectStore.get(key);
request.onerror = function(event) {
console.log('事务失败');
};
request.onsuccess = function( event) {
if (request.result) {
var str=request.result.text;
console.log(str.replace(/^\s+|\s+$/g,"").substr(-18)); download('indexedDb_'+str.replace(/^\s+|\s+$/g,"").substr(-18)+'.txt',request.result.text);
} else {
console.log('未获得数据记录');
}
};
}
function download(filename, text) {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);
if (document.createEvent) {
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
} else {
pom.click();
}
}
再把代码放到控制台。最后依次执行
open();
read(key);
//key 为step2中你找到的key值
大功告成,现在你可以到你浏览器的下载目录找到你丢失的博客了。
注意:如果浏览器拦截下载,将失败。