2012-03-08 14 views
7

Wyobraź sobie klienta FTP napisanego w HTML i JavaScript. Ta część działa. Ale byłoby miło, gdyby użytkownik mógł "skopiować listing" do schowka. Okazuje się, że rzeczy ze schowka nie są tak łatwe w JS (poza tym aukcje mogą być ogromne). Więc lepiej jest wyskoczyć okno z wygenerowanym wykazem, a następnie użytkownik może wybrać Copy'Paste lub zapisać stronę na dysku.Chrome: JavaScript window.open do zapisywania

Obecnie robię:

 
    my_window = window.open("", "Copy List"); 
    my_window.document.write('<pre>\n'+string+'</pre>'); 
    my_window.document.close(); 

który działa. Dostaję nową kartę, a listing, który wygenerowałem w "łańcuchu", ładnie się wyświetla.

Ale Chrome wyłącza/wyszarza opcję "Zapisz stronę". Byłoby miło, gdyby użytkownik mógł zapisać stronę (html lub txt). Jaka magia jest wymagana, aby otworzyć okno/kartę i pozwolić im zapisać zawartość?

Ponieważ korzystamy z WebSockets (klucz1/klucz2) działa to tylko w przeglądarce Chrome, nie są potrzebne żadne inne przeglądarki.

+0

Prawie każda przeglądarka obsługuje gniazd internetowych; będziesz potrzebować lepszego usprawiedliwienia niż ta, aby zrzucić obsługę wielu przeglądarek. http://caniuse.com/#feat=websockets – Domenic

+0

Chodzi raczej o wersję protokołu. Odkąd zaimplementowałem port WebSocket w silniku FXP.One do obsługi kodu JS, zaimplementowałem tylko nowy protokół, który używa Sec-WebSocket-Key i Sec-WebSocket-Accept. Obecnie (przynajmniej kiedy zaczęliśmy kod w grudniu) oznaczało to tylko Chrome. Wszystkie inne przeglądarki używały klawisza1/klucz2, lub, były wyłączone. Mógłbym też wdrożyć stary protokół, ale ponieważ był on wycofywany, czułem, że czekanie jest łatwiejsze. – lundman

+0

Przetestowałem ponownie Firefox, wciąż stary protokół. Ale Firefox-Beta5 je zaktualizował i naprawdę działa dobrze z FXP.One. Tak więc, jeśli uruchomisz wersję beta, rozwiązanie dla dwóch przeglądarek byłoby miłe. – lundman

Odpowiedz

3

Way po fakcie, ale można użyć danych URI dla tego:

window.open("data:text/plain;base64,"+btoa(theCode))

Powiązane problemy