2013-07-10 6 views
6

więc standardowy sposób, że navigator.webkitGetUserMedia służy to jak takie:Webkit Google ChromeGetUserMedia - co zrobić, jeśli użytkownik zignoruje to okno dialogowe?

function success() { 
    console.log('User accepted'); 
} 

function deny() { 
    console.log('User rejected'); 
} 

navigator.webkitGetUserMedia({video: true, audio: true}, success, deny); 

Witryna Zajmuję absolutnie wymaga użycia kamery i mikrofonu (faktycznie, za pomocą Flash użytkownika, ale to wydaje się iść za pośrednictwem tego interfejsu API), więc staram się zrobić wszystko, aby zapewnić, że użytkownik zawsze wie, co musi kliknąć, aby strona działała.

  • Jeśli nie jest wywoływana żadna funkcja, zakładamy, że okno dialogowe jest wyświetlane i wyświetla instrukcje użytkownikowi.
  • Jeśli wywołanie jest zabronione, wyjaśnij, że wymagany jest dostęp do kamery i pokaż, że mogą kliknąć ikonę kamery na pasku adresu Chrome, aby zmienić decyzję.
  • Oczywiście, jeśli zostanie wywołany sukces, użytkownik zaakceptował i kontynuował normalnie.

Oto kicker; i możesz śledzić dalej, wklejając powyższą wersję Javascript do dowolnej strony (w Chrome). Jeśli użytkownik przejdzie do nowej strony internetowej lub odświeży bieżącą stronę bez akceptowania, odrzucania lub odrzucania listy rozwijanej, , nie zobaczy ponownie okna dialogowego uprawnień dla bieżącej domeny dla sesji przeglądarki.

Ponownie wyświetli się , a następnie , a nie wyświetli okno dialogowe uprawnień, a nawet ikona kamery nie pojawi się na pasku URL. Konsola nie loguje się nawet "Użytkownik odrzucony". Co więcej, dla wielu użytkowników to menu jest bardzo łatwe do przypadkowego zignorowania. Jedyną dostępną opcją jest całkowite zamknięcie przeglądarki i ponowne jej otwarcie (lub ręczna nawigacja po skomplikowanych menu ustawień, na które NIE chcemy zmuszać naszych użytkowników).

Czy mogę potwierdzić z kimkolwiek tutaj, czy jest to "w jakiś sposób", czy też jest coś, czego mi brakuje?

+0

Wydaje się działać dla mnie (Chrome 27 w systemie Windows Vista). Jeśli odświeżę stronę, pasek uprawnień znowu się podniesie. Jeśli przejdę na inną stronę, a następnie powrócę do strony początkowej, wyskoczy ona również ponownie. Może sprawdź, czy masz już ustawiony wyjątek dla tej nazwy hosta: chrome: // settings/contentExceptions # media-stream –

+0

Spróbuj w ten sposób: Przejdź tutaj: http://www.testwebcam.com/, a następnie kliknij Zezwalaj wewnątrz Flasha . Następnie nie klikaj banera Chrome w ogóle, ale odśwież stronę. Kliknij Zezwalaj na Flash ponownie - brak banera. Nie ustawiono wyjątków witryny; usuwamy to menu za każdym razem, aby ponownie przetestować. – Katana314

+0

Nigdy nie dostaję transparentu uprawnień na tej stronie - tylko okno dialogowe uprawnień Flash.Mogę konkretnie blokować uprawnienia mediów w Chrome dla tej domeny i nie będzie to miało żadnego znaczenia. W ustawieniach jest napisane "Wyjątki kamery i mikrofonu Adobe Flash Player są różne." więc myślę, że to ma sens. Zakładam, że to dla ciebie coś innego - z jakiego systemu operacyjnego korzystasz? –

Odpowiedz

6

Wygląda na to, że jest to znany błąd.

Issue 252904: Wyskakujące okno z informacją o uprawnieniach mic/cam powoduje nieoczekiwany stan uprawnień; powoduje nieodwracalny brak zgody na przeładowanie

Obecnie twopatches w wątku wypowiedzieć na ten błąd, więc przynajmniej wiesz, że pracują nad rozwiązaniem tego problemu. Niestety, nie wydaje się, aby w tym czasie były jakieś rzeczywiste obejścia tego błędu.

Jedna rzecz, o której warto wspomnieć: jeśli zamkniesz kartę, a następnie ponownie otworzysz adres URL, wydaje się, że to okno dialogowe uprawnień ponownie się wyświetla. Wiem, że to nie jest prawdziwe rozwiązanie, ale przynajmniej jest lepsze niż zamknięcie całej przeglądarki (co, jak sądzę, jest tym, co robiłeś do tej pory).

+0

Bardzo dziękuję za informację; Prawdopodobnie udzielę tej odpowiedzi nagrody, chyba że ktoś znajdzie jakieś niesamowite obejście. Dobrze wiedzieć, że nad tym pracują. Niestety, nasza strona ma wiele stanów, które mogą zostać popsute, jeśli użytkownik zamknie i ponownie otworzy kartę pod tym samym adresem URL. Co więcej, jest jeszcze mniej intuicyjny, niż chcielibyśmy dla naszych użytkowników. – Katana314

Powiązane problemy