使用javascript"保存"当前页面状态

qwe*_*ymk 5 javascript uri

我要做的是有一个函数创建一个uri锚来重绘/重新渲染/(称之为你想要的)整个页面

基本上我希望能够将任何页面转换为URI方案,这样当我导航到这样的链接时,我得到整个页面,就像保存网页一样.例如,如果我要编辑一个页面,并希望稍后恢复所有textareas就像他们的方式和表格填写,或者如果我想保存某些(小)页面而不必担心他的网站将去下来而不必在我的电脑上保存文件(我想使用bookmarklet)

这是我到目前为止所拥有的:

html = '<html>' + document.documentElement.innerHTML + '</html>';
//html = html.replace(/"/g, '\\"');
a = document.createElement('a');
a.href = 'data:text/html;charset=utf-8,' + html;
a.innerHTML = 'click here';
document.body.appendChild(a);
Run Code Online (Sandbox Code Playgroud)

你看我正在做什么.好了,现在困难的部分是以某种方式使用正则表达式替换已经在双引号中的所有双引号而不是那些不是双引号的双引号.

例如,如果我们创建页面

<html><body>Testing</body></html>
Run Code Online (Sandbox Code Playgroud)

并运行该功能足够多次我们将在第3和链接上遇到一些问题.

看看我的意思:http://jsfiddle.net/AvSh3/3/

qwe*_*ymk 0

在我自己的页面上测试时这有效:

a = document.createElement('a');
a.href = 'data:text/html;charset=utf-8,<html>' +
    escape(document.documentElement.innerHTML) + '</html>';
a.innerHTML = 'click here';
document.body.appendChild(a);
Run Code Online (Sandbox Code Playgroud)

我猜这只是 jsBin/jsFiddle 的技术问题,但我不知道为什么。无论如何,如果人们想用它来制作书签,请点击以下链接:

....

好吧,我不知道如何在 SO 中创建书签链接,如果您只想使用此位置创建一个新书签:

javascript:a=document.createElement("a");a.href="data:text/html;charset=utf-8,<html>"+escape(document.documentElement.innerHTML)+"</html>";a.innerHTML="click here";document.body.appendChild(a);
Run Code Online (Sandbox Code Playgroud)

无论如何,使用这个有趣的工具,我们可以像 Jon 在第一个链接中所做的那样:

http://wundes.com/bookmarklets.html