„Zgłoś błąd” lub „Narzędzie opinii” Google pozwala wybrać obszar okna przeglądarki, aby utworzyć zrzut ekranu z informacją o błędzie.
Zrzut ekranu autorstwa Jasona Smalla, opublikowany w zduplikowanym pytaniu .
Jak oni to robią? Interfejs API JavaScript do przesyłania opinii Google jest ładowany stąd, a ich przegląd modułu opinii pokaże możliwości zrzutów ekranu.
javascript
html
canvas
screenshot
joelvh
źródło
źródło
Odpowiedzi:
JavaScript może odczytywać DOM i renderować dość dokładne przedstawienie tego za pomocą
canvas
. Pracowałem nad skryptem, który konwertuje HTML na obraz na płótnie. Zdecydowałem dzisiaj, aby wdrożyć to w wysyłanie informacji zwrotnych, jak opisano.Skrypt umożliwia tworzenie formularzy opinii, które zawierają zrzut ekranu utworzony w przeglądarce klienta wraz z formularzem. Zrzut ekranu jest oparty na modelu DOM i jako taki może nie być w 100% dokładny do rzeczywistej reprezentacji, ponieważ nie tworzy rzeczywistego zrzutu ekranu, ale tworzy zrzut ekranu na podstawie informacji dostępnych na stronie.
Nie wymaga żadnego renderowania z serwera , ponieważ cały obraz jest tworzony w przeglądarce klienta. Sam skrypt HTML2Canvas jest nadal w bardzo eksperymentalnym stanie, ponieważ nie analizuje prawie tyle atrybutów CSS3, ile chciałbym, ani nie obsługuje ładowania obrazów CORS, nawet jeśli proxy było dostępne.
Nadal dość ograniczona kompatybilność z przeglądarkami (nie dlatego, że nie można było obsłużyć większej liczby, po prostu nie miałem czasu, aby uczynić ją bardziej obsługiwaną przez różne przeglądarki).
Aby uzyskać więcej informacji, spójrz na przykłady tutaj:
http://hertzen.com/experiments/jsfeedback/
edycja Skrypt html2canvas jest teraz dostępny osobno tutaj i kilka przykładów tutaj .
edytuj 2 Kolejne potwierdzenie, że Google stosuje bardzo podobną metodę (w rzeczywistości, na podstawie dokumentacji, jedyną zasadniczą różnicą jest ich asynchroniczna metoda przejścia / rysowania) można znaleźć w tej prezentacji Elliott Sprehn z zespołu Google Feedback: http: //www.elliottsprehn.com/preso/fluentconf/
źródło
Twoja aplikacja internetowa może teraz wykonać „natywny” zrzut ekranu całego pulpitu klienta, używając
getUserMedia()
:Spójrz na ten przykład:
https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/
Klient będzie musiał używać chrome (na razie) i będzie musiał włączyć obsługę przechwytywania ekranu pod flagami chrome: //.
źródło
Navigator.getUserMedia()
jest przestarzałe, ale tuż pod nim jest napisane „... Proszę użyć nowszej navigator.mediaDevices.getUserMedia () ”, tj. Właśnie został zastąpiony nowszym API.Jak wspomniał Niklas , możesz użyć biblioteki html2canvas, aby zrobić zrzut ekranu za pomocą JS w przeglądarce. Rozszerzę jego odpowiedź w tym punkcie, podając przykład wykonania zrzutu ekranu przy użyciu tej biblioteki:
Pokaż fragment kodu
W
report()
funkcjionrendered
po uzyskaniu obrazu jako URI danych możesz pokazać go użytkownikowi i pozwolić mu na narysowanie „regionu błędu” myszką, a następnie wysłać zrzut ekranu i współrzędne regionu na serwer.W tym przykładzie
async/await
powstała wersja: z ładnąmakeScreenshot()
funkcją .AKTUALIZACJA
Prosty przykład, który pozwala zrobić zrzut ekranu, wybrać region, opisać błąd i wysłać żądanie POST ( tutaj jsfiddle ) (główną funkcją jest
report()
).Pokaż fragment kodu
źródło
Pobierz zrzut ekranu jako Canvas lub Jpeg Blob / ArrayBuffer, używając interfejsu API getDisplayMedia :
PRÓBNY:
źródło
Oto przykład użycia: getDisplayMedia
Warto również sprawdzić dokumentację API Screen Capture .
źródło