Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

多媒体输入API的一些蛋疼权限设计

  现代浏览器为多媒体输入提供了个接口:navigator.getUserMedia(可能需要浏览器前缀)。多媒体输入毕竟和键盘输入不同,它需要用户主动开启权限。而目前浏览器对其的权限设计并不太友好,有些太严,使用起来麻烦;有些太弱,安全性有风险。
  首先,这是一个异步方法。调用时通常会向用户请求权限,然后根据用户对权限的许可,执行不同的回调函数。
<script>
//调整兼容
navigator.getUserMedia=
  navigator.getUserMedia||
  navigator.webkitGetUserMedia||
  navigator.mozGetUserMedia;
//调用
navigator.getUserMedia({audio:true},function(){
  //允许
},function(e){
  //拒绝
});
</script>
  这个代码执行后,页面上就会弹出麦克风的请求
  但我觉得Chrome上这个权限设计是很糟糕!在HTTP上,一旦拒绝一次,之后就会自动拒绝,不会再弹出提醒,需要手动重新开启。这个重新开启的操作对于一般用户而言是很难完成的。而在HTTPS上,一旦允许一次,之后就会自动允许,不会再弹出提醒,这样如何保证用户安全?并不是每一个HTTPS的网站都是善良的,外行人相当于身边被放了一个窃听器。

  Firefox上的权限设计会比Chrome正常一些,至少它每次都会弹出请求。但是拒绝按钮的位置不太明显,很多时候用户会点击页面或直接关闭掉这个请求框,那么getUserMedia传递的任何回调函数都不会被调用到,这会给程序带来一些困扰。
  我觉得Flash上的权限设计才比较合理,平时每次都会弹出请求,但也可以直接设置成全局允许。而懂得任何设置全局允许的人一定会知道如何取消这个设置。只是Flash的UI设计只是局限在了它自己的一小块区域中,对于没有UI的Flash无法进行权限请求,这也是个蛋疼的问题。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^