JavaScript có thể đọc DOM và hiển thị đại diện khá chính xác bằng cách sử dụng canvas
. Tôi đã làm việc trên một kịch bản mà chuyển đổi html thành một hình ảnh canvas. Quyết định ngày hôm nay để thực hiện nó để gửi phản hồi như bạn mô tả.
Tập lệnh cho phép bạn tạo biểu mẫu phản hồi bao gồm ảnh chụp màn hình, được tạo trên trình duyệt của khách hàng, cùng với biểu mẫu. Ảnh chụp màn hình dựa trên DOM và do đó có thể không chính xác 100% đối với biểu diễn thực vì nó không tạo ảnh chụp màn hình thực, nhưng xây dựng ảnh chụp màn hình dựa trên thông tin có sẵn trên trang.
Nó không yêu cầu bất kỳ hiển thị nào từ máy chủ, vì toàn bộ hình ảnh được tạo trên trình duyệt của khách hàng. Bản thân HTML2Canvas chính nó vẫn ở trạng thái rất thử nghiệm, vì nó không phân tích gần như nhiều thuộc tính CSS3 mà tôi muốn nó, cũng không có bất kỳ sự hỗ trợ nào để tải các hình ảnh CORS ngay cả khi có sẵn proxy.
Tính tương thích của trình duyệt vẫn còn khá hạn chế (không phải vì không thể hỗ trợ nhiều hơn, chỉ không có thời gian để hỗ trợ trình duyệt chéo nhiều hơn).
Để biết thêm thông tin, có một cái nhìn vào các ví dụ ở đây:
http://hertzen.com/experiments/jsfeedback/
chỉnh sửa Kịch bản html2canvas bây giờ đã có riêng here và một số examples here.
chỉnh sửa 2 Một xác nhận rằng Google sử dụng một phương pháp rất giống nhau, (trong thực tế dựa trên các tài liệu sự khác biệt lớn duy nhất là phương pháp traversing/vẽ async của họ) có thể được tìm thấy trong bài trình bày này bằng cách Elliott Sprehn từ nhóm Google Feedback: http://www.elliottsprehn.com/preso/fluentconf/
Elliott Sprehn [đã viết trong một Tweet] (https://twitter.com/#!/ElliottZ/status/89520809147772929) vài ngày trước: > @CatChen Bài đăng xếp chồng ngược đó không chính xác. Ảnh chụp màn hình của Google Feedback được thực hiện hoàn toàn phía khách hàng.:) –
Đường nối này hợp lý khi họ muốn nắm bắt chính xác cách trình duyệt của người dùng hiển thị một trang, không phải cách họ sẽ hiển thị trang đó ở phía máy chủ bằng cách sử dụng công cụ của họ. Nếu bạn chỉ gửi DOM trang hiện tại tới máy chủ, nó sẽ bỏ lỡ bất kỳ mâu thuẫn nào trong cách trình duyệt hiển thị HTML. Điều này không có nghĩa là câu trả lời của Chen là sai khi chụp ảnh màn hình, có vẻ như Google đang làm điều đó theo một cách khác. –
Elliott đã đề cập Jan Kuča hôm nay và tôi đã tìm thấy liên kết này trong tweet của Jan: http://jankuca.tumblr.com/post/7391640769/client-side-rendering-engine-take-1 –