2012-03-08 37 views
7

Hãy tưởng tượng một ứng dụng khách FTP được viết bằng HTML và JavaScript. Phần này hoạt động. Nhưng nó sẽ là tốt đẹp nếu người dùng có thể "sao chép danh sách" vào clipboard. Hóa ra rằng công cụ clipboard không dễ dàng như vậy trong JS (bên cạnh đó, danh sách có thể rất lớn). Vì vậy, tốt hơn là để bật lên một cửa sổ với danh sách được tạo ra, sau đó người dùng có thể chọn để Copy'Paste, hoặc Lưu trang vào đĩa.Chrome: Cửa sổ JavaScript. Mở để có thể Lưu

Hiện nay tôi làm:

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

Những công trình. Tôi nhận được một tab mới, và danh sách tôi đã tạo ra trong "chuỗi" hiển thị độc đáo.

Nhưng Chrome vô hiệu hóa/chuyển sang màu xám tùy chọn "Lưu trang". Sẽ thật tuyệt nếu người dùng có thể lưu trang (html hoặc txt). Cần có ma thuật nào để mở cửa sổ/tab và cho phép họ lưu nội dung?

Vì chúng tôi sử dụng WebSockets (key1/key2), tính năng này chỉ hoạt động trong Chrome, không cần trình duyệt nào khác.

+0

Khá nhiều mọi trình duyệt hỗ trợ cổng web; bạn sẽ cần một cái cớ tốt hơn là để giảm hỗ trợ qua trình duyệt. http://caniuse.com/#feat=websockets – Domenic

+0

Thông tin thêm về phiên bản giao thức. Vì tôi đã triển khai cổng WebSocket trên công cụ FXP.One cho mã JS để nói chuyện, tôi chỉ thực hiện giao thức mới, sử dụng giao thức Sec-WebSocket-Key và Sec-WebSocket-Accept. Hiện tại (ít nhất, khi chúng tôi bắt đầu mã vào tháng 12) chỉ có nghĩa là Chrome. Tất cả các trình duyệt khác được sử dụng key1/key2, hoặc, đã bị tắt. Tôi có thể đã thực hiện giao thức cũ là tốt, nhưng khi nó đã được loại bỏ, tôi cảm thấy chờ đợi dễ dàng hơn. – lundman

+0

Tôi đã thử nghiệm lại Firefox, vẫn là giao thức cũ. Nhưng Firefox-Beta5 đã cập nhật và thực sự hoạt động tốt với FXP.One. Vì vậy, tôi đoán nếu bạn chạy bản beta, một giải pháp cho hai trình duyệt sẽ tốt đẹp. – lundman

Trả lời

3

Way sau khi thực tế nhưng bạn có thể sử dụng một dữ liệu URI cho việc này:

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

Các vấn đề liên quan