2010-12-19 79 views
5

我試圖做的是有一個函數來創建一個URI錨重繪/重新呈現/(叫什麼你想要的)整個頁面「保存」當前頁面狀態使用JavaScript

基本上我想成爲能夠將任何頁面轉換爲URI方案,這樣當我導航到這樣一個鏈接時,我可以像保存網頁一樣獲取整個頁面。例如,如果我要編輯一個頁面,並希望稍後恢復所有textareas,就像他們的方式和表格填寫一樣,或者如果我想保存某些(小)頁面而不必擔心他的網站將會去下來,而不必救我的計算機上的文件(我想用小書籤)

這是我到目前爲止有:

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); 

你看什麼,我試圖做的。 好吧,現在硬部分是用某種方式使用正則表達式來替換已經在雙引號中的所有雙引號,而不是那些不是。

例如,如果我們創建頁面

<html><body>Testing</body></html> 

和運行功能足夠的時間,我們會得到與第3和鏈接的一些問題。

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

+0

我修改你的questio ñ所以希望更多的人誰可以幫助會發現它/瞭解它 – 2010-12-19 03:09:12

+0

更清晰,謝謝 – qwertymk 2010-12-19 03:12:49

+0

我迫不及待地想知道這是什麼。我真的不完全明白目標是什麼,但有些東西告訴我結果會很酷。 – Hemlock 2010-12-19 21:54:45

回答

0

這是我自己的網頁上測試時的作品。無論如何,如果人們想用這個做小書籤繼承人的鏈接:

....

嗯,我無法弄清楚如何在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); 

反正用這個有趣的工具,我們可以做這樣的事情確實喬恩在第一個鏈接在這裏:

http://wundes.com/bookmarklets.html

3

使用內置的escape()函數:

html = escape(html); 
+0

仍然不工作:http://jsbin.com/uqeni4/edit – qwertymk 2010-12-19 04:39:36

0

我返工成

var html = '<html>' + $("html").html() + '</html>'; 
$('<a></a>').html("click here") 
.attr("href", 'data:text/html;charset=utf-8,' + escape(html)) 
.appendTo($("body")); 

這顯示不正確,但在查看源代碼時,一切看起來都正確也許還需要其他特殊參數?

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); 

我猜它只是一個jsBin /技術性的jsfiddle,但我不知道爲什麼:

+0

實際上我正在尋找一個非jQuery的答案。我只是在jsfiddle中使用它,因爲由於某種原因window.onload不工作,我厭倦了試圖找出它。我猜測雙引號需要在其他雙引號中轉義。除非有更好的方法去做這件事 – qwertymk 2010-12-19 04:31:48

+0

jsBin例子:http://jsbin.com/uqeni4/edit – qwertymk 2010-12-19 04:38:58

+1

@qwe - 兩者似乎都適用於這個簡單的例子。當我在更復雜的頁面中嘗試(使用jQuery,作爲Play框架的一部分)時,即使源代碼看起來很好,我也會收到javascript錯誤並顯示問題。不知道這筆交易是什麼 – 2010-12-19 04:47:16