2010-12-19 12 views
5

kullanarak geçerli sayfa devlet "kaydet"/rerender/Ne yapmaya çalışıyorum bir işlev yeniden çizmek için bir uri çapa oluşturmak zorunda olduğunu javascript

Temelde ben olmak istiyorum sayfanın tamamını (istediğini diyoruz) Herhangi bir sayfayı bir URI şemasına dönüştürebilmek için böyle bir bağlantıya gittiğimde, bir sayfanın tamamını, bir web sayfasının kaydedilmesini istiyorum. Mesela bir sayfa düzenliyor olsaydım ve daha sonra tüm textareas ile formları doldurulursa ve formlar doldurulursa ya da birilerinin (küçük) sayfalarını sitenin gideceklerinden endişe etmeden kaydetmek istediğimde aşağı ve bilgisayarımda dosyaları kaydetmek zorunda kalmadan

İşte ben bugüne kadar ne var (ben yer işareti kullanmak istiyorum):

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

ne yapmaya çalışıyorum görmek. Tamam şimdi zor kısmı, zaten çift tırnak içinde bulunan çift tırnakların yerine çift tırnaklı olanların yerine geçmek için bir normal ifadeyi kullanıyor. Örneğin

yeterince kere sayfa

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

oluşturmak ve işlevini çalıştırırsanız kalacağız 3rd ile ve linklere bazı sorunları olsun.

ne demek bakınız: Ben

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

içine yeniledik

html = escape(html); 
+0

Ben senin soruyu yanıtlamalarını modifiye: Neyse Jon burada birinci linkte yaptığı gibi biz şeyler yapabilirsiniz Bu eğlenceli aracıyla

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

: bu konumla n bu yüzden umarım daha fazla insan yardım edebilecek/anlayacaktır –

+0

Çok açık, teşekkürler – qwertymk

+0

Bunun ne olduğunu görmek için sabırsızlanıyorum. Amacın tam olarak ne olduğunu tam olarak anlamadım, ama bir şey bana sonuçların güzel olacağını söylüyor. – Hemlock

cevap

0

Bu çalışır. insanlar heres linki yer işareti yapmak için bu kullanmak istiyorsanız Neyse:

....

Eh ben SO bir yer işareti bağlantısı yapmak için anlamaya olamaz sadece yeni bir yer imi oluşturmak istediğiniz takdirde

http://wundes.com/bookmarklets.html

3

dahili kaçış() işlevini kullanın ama kaynağı görüntülerken her şey doğru görünüyor. Belki başka bir özel parametre gerekli? Bunun sadece jsBin/jsFiddle Teknik olarak tahmin ediyorum ama neden hiçbir ipucu var

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

: Kendi sayfasında test ederken

+0

Hala çalışmıyor: http://jsbin.com/uqeni4/edit – qwertymk

0

düzgün görüntülenmez: http://jsfiddle.net/AvSh3/3/

+0

aslında jQuery olmayan bir cevap arıyorum. Ben sadece jsfiddle kullanıyordum çünkü bir sebepten dolayı window.onload çalışmıyordu ve bunu anlamaya çalışmaktan bıktım. Çift tırnakların diğer çift tırnaklarda kaçması gerektiğine inanıyorum.Bu – qwertymk

+0

jsBin örneğini yapmanın daha iyi bir yolu olmadığı sürece: http://jsbin.com/uqeni4/edit – qwertymk

+1

@qwe - her ikisi de basit örnek için işe yaramaktadır. Daha karmaşık bir sayfada denediğimde (jQuery ile, Play framework'ün bir parçası), kaynak kodu iyi görünse bile javascript hataları ve görüntü sorunları yaşadım. Anlaşmanın ne olduğundan emin değil –

İlgili konular