2013-01-24 39 views
8

Tôi có một hộp thoại phương thức trong ứng dụng sử dụng getUserMedia để hiển thị video từ máy ảnh của người dùng. Điều này làm cho thanh "Từ chối/Cho phép" xuất hiện. Giả sử người dùng đóng hộp thoại trước khi nhấp vào "Từ chối" hoặc "Cho phép". Thanh vẫn còn, mặc dù các yếu tố sẽ sử dụng nó đã biến mất.Hủy yêu cầu getUserMedia

Có cách nào để thông báo cho trình duyệt rằng nó có thể ẩn yêu cầu cấp quyền mặc dù người dùng không bao giờ tương tác với nó không?

+0

Không, và có lý do bảo mật cho nó. Trình duyệt sẽ hỏi mỗi lần miền thử truy cập phương tiện đó nếu miền chưa có trong danh sách cho phép/từ chối. –

+0

Tôi nhận thấy rằng câu hỏi của tôi đã bị phát âm. Có vẻ như tôi đang hỏi thứ gì đó khác với những gì tôi thực sự hỏi. Hy vọng rằng bản chỉnh sửa của tôi đã làm sáng tỏ câu hỏi một cách đầy đủ. –

+0

Tôi hy vọng bạn không phiền, nhưng tôi đã giảm câu hỏi xuống một hình thức đơn giản hơn với hy vọng rằng ai đó có nhiều khả năng trả lời hơn. Vấn đề phụ của bạn về việc có nhiều yêu cầu có thể được giải quyết bằng cách sử dụng các biến có phạm vi lớn hơn, ví dụ như đối tượng luồng toàn cầu và hàm toàn cục được gọi khi quyền truy cập được cấp. Sau đó, nó không quan trọng mà gọi lại cháy, bởi vì cả hai đều sẽ có tác dụng tương tự. – Dave

Trả lời

-4

Tôi nghĩ rằng bạn muốn một cái gì đó như thế này:

$("body").on('click', "#stop_button", function(e) { 
     e.preventDefault(); 
     mediaStream.stop(); 
    }); 

MediaStream là biến toàn cầu của tôi mà được định nghĩa khi tôi gọi getUserMedia

 navigator.getUserMedia(
      { 
       video: true, 
       audio: false 
      }, 
      function(stream) { 
       if (navigator.mozGetUserMedia) { 
       video.mozSrcObject = stream; 
       } else { 
       var url = window.URL || window.webkitURL; 
       video.src = url ? url.createObjectURL(stream) : stream; 
       } 
       mediaStream = stream; 
       video.play(); 
      }, 
      function(error) { 
       console.log("ERROR: " + error); 
      } 
     ); 

Vì vậy, trong ví dụ của bạn, bạn sẽ gọi stop() vào luồng phương tiện của bạn khi hộp thoại bị đóng - bạn phải tạo trình xử lý sự kiện cho điều đó.

Hãy xem Tutorial on getUserMedia này để có ví dụ hoàn chỉnh và bản trình diễn trực tiếp.

+3

Tôi chưa có máy tính để kiểm tra, nhưng tôi tin rằng điều này không làm cho biểu ngữ quyền biến mất nếu người dùng chưa cho phép/từ chối nó. Ít nhất, đó là trường hợp khi tôi đã cố gắng này một vài tháng trước đây. – Dave

2

Khi người dùng đóng hộp thoại của bạn, tải lại trang để xóa yêu cầu sự cho phép với:

location.reload(); 

Tôi đã thử nghiệm điều này trong Firefox và Chrome 41 (Canary) và nó hoạt động ở đó.

Lưu ý: Chrome 39 (phiên bản hiện tại của bài viết này) có vẻ như có lỗi ở đây không hoạt động tốt. Lần đầu tiên tôi điều hướng đến trang nó sẽ không hoạt động, nhưng sau khi làm mới trang theo cách thủ công một lần, nó bắt đầu hoạt động.

Tôi nhận thấy câu trả lời này có thể không hữu ích ngay lập tức, nhưng sau khi Chrome 41 gửi nó sẽ hoạt động.

Hiện không có cách nào để xóa lời nhắc cấp quyền mà không cần tải lại trang.

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