2013-07-10 1 views
6

Таким образом, стандартный способ, который navigator.webkitGetUserMedia используется, как например:Google Chrome webkitGetUserMedia - что, если пользователь игнорирует диалог?

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

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

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

Сайт Я разрабатываю абсолютно необходимо использовать веб-камеры пользователя и микрофон (на самом деле, с использованием Flash, но это, кажется, идет через этот API сейчас), поэтому я стараюсь сделать все, чтобы пользователь всегда знал, что им нужно, чтобы щелкнуть, чтобы сайт работал.

  • Если не вызывается ни одна из функций, предположим, что диалог отображается, и отображает инструкции пользователю.
  • Если deny вызывается, объясните, что необходим доступ к веб-камере, и покажите им, что они могут щелкнуть значок камеры в строке URL-адреса Chrome, чтобы изменить свое решение.
  • Конечно, если успех вызван, то пользователь принял и продолжит, как обычно.

Это кикер; и вы могли бы следовать, вставив вышеуказанный Javascript на любой сайт, который вам нравится (в Chrome). Если пользователь переходит на новую веб-страницу или обновляет текущую страницу без принятия, отклонения или отклонения выпадающего списка, то они не будут видеть диалог разрешений для текущего домена для сеанса браузера.

Звонок navigator.webkitGetUserMedia(...) снова будет не показать диалог с разрешениями, и значок камеры даже не появится в строке URL. Консоль даже не регистрирует «Пользователь отклонен». Более того, для многих пользователей это выпадающее меню очень легко случайно игнорировать. Единственное исправление заключается в том, чтобы полностью закрыть браузер и повторно открыть его (или вручную переходить через сложные меню настроек, которые мы НЕ хотим принуждать наших пользователей).

Могу ли я подтвердить, что кто-нибудь здесь, является ли это «каким-то образом», или если что-то мне не хватает?

+0

Он работает для меня (Chrome 27 на Windows Vista). Если я обновляю страницу, панель разрешений снова поднимается. Если я перейду к другой странице, а затем вернусь к исходной странице, она снова появится. Возможно, проверьте, у вас уже есть набор исключений для этого имени хоста: chrome: // settings/contentExceptions # media-stream –

+0

Попробуйте этот способ: Идите сюда: http://www.testwebcam.com/, затем нажмите Разрешить внутри Flash , Затем не нажимайте баннер Chrome вообще, но обновляйте страницу. Еще раз нажмите Разрешить на Flash - нет баннера. Нет исключений сайтов; мы каждый раз очищаем это меню для повторной проверки. – Katana314

+0

Я никогда не получаю разрешение на этой странице - просто диалог разрешения Flash.Я могу специально заблокировать медиа-разрешения в Chrome для этого домена, и это не будет иметь никакого значения. В настройках он говорит, что «камера Adobe Flash Player и исключения для микрофона различны». поэтому я предполагаю, что это имеет смысл. Я предполагаю, что для вас все по-другому - какую ОС вы используете? –

ответ

6

Кажется, что это известная ошибка.

Issue 252904: всплывающее окно Infobar на разрешение микрофона/камеры приводит к непредвиденному состоянию разрешения; приводит к неустранимой отсутствие разрешения на перезагрузкой

Есть в настоящее время twopatches в комментарии нить на том, что ошибка, так по крайней мере, вы знаете, что они работают, чтобы решить проблему. К сожалению, в настоящее время не существует никаких реальных обходных ошибок для ошибки.

Следует упомянуть одну вещь: если вы закроете вкладку, а затем снова откроете URL-адрес, это, похоже, заставит диалоговое окно разрешений показать снова. Я знаю, что это не настоящее решение, но, по крайней мере, это лучше, чем закрытие всего браузера (я думаю, это то, что вы делали до сих пор).

+0

Большое спасибо за информацию; Я, скорее всего, дам этот ответ на щедрость, если кто-то не найдет какой-нибудь удивительный обходной путь. Хорошо знать, что это работает. К сожалению, на нашем сайте много сохранения состояния, которое может быть испорчено, если пользователь закрывает и снова открывает вкладку с тем же URL-адресом. Кроме того, он еще менее интуитивно понятен, чем мы хотели бы для наших пользователей. – Katana314

 Смежные вопросы

  • Нет связанных вопросов^_^