JavaScript:你能读取系统音量吗?

21

有没有办法用Javascript读取系统(Linux、Windows、OS/X等)的卷?

我不需要设置它,只是读取它?

谢谢


1
如果您想通过JavaScript获取操作系统信息,可以使用navigator.userAgent - Jishnu A P
HTML5媒体允许您在任何media对象上设置音量。这可能会很有用。 - Raynos
2个回答

14

我假设你谈论的是浏览器环境下的Javascript。在这种情况下,答案很明确、简短而简单:不行

客户端Javascript不支持文件IO操作。


然而,在某些浏览器中,您可以通过设置特定于浏览器的选项来突破这个规则。例如,使用命令行参数--disable-web-security调用基于Webkit的浏览器允许浏览器读取像file:///c/somefolder/这样的URI。Mozilla通过编辑user ini加上about:config中的设置来提供此可能性。


更新

我想deceze的评论是正确的,你真正指的是“声音音量”。在这种情况下,您可以忘记上面的文本,但答案仍然是不能。没有一种本地Javascript接口可以获取和/或设置这种类型的操作系统设置。


我假设OP的意思是“音量”,而不是“分区”。但答案仍然是一样的。 :) - deceze
实际上,正确的答案是是,但需要额外的软件支持(例如:可脚本化插件)。 - Free Consulting
谢谢Andy,关键是要读取用户是否有音量来听音频,如果有音量则播放音频,如果没有音量,则不必播放。 - Matt

9
只是想回复一下@jAndy的答案:浏览器环境的整个意义在于,你无法这样做。如果你在浏览网站时,浏览器允许网站(通过其JavaScript)收集关于你的计算机的信息,并将其发送给可能对你构成威胁的人,那么你会信任浏览器吗?
因此,答案“NO”不仅是正确的,而且是必须的,才能使浏览器不仅仅只能处理微不足道的事情。浏览器(不包括JavaScript-不要攻击使者)是经过特意设计的,以使你的问题的答案是NO。
现在,作为一种语言,JavaScript确实不会阻止你这样做。浏览器通过一个叫做“沙盒”的过程禁止你的访问,而不是JavaScript。
IE和ActiveX控件怎么样?
IE允许用户安装可以完全控制系统的ActiveX控件。在这种情况下,JavaScript可以轻松地创建一个ActiveX对象,然后根据赋予ActiveX控件的权限对您的计算机进行任何操作(包括FORMAT C:)。
因此,IE通过允许网站下载和安装ActiveX控件到客户计算机上,有着巨大的安全风险,有时具有完全访问权限。JavaScript在这里只是一个使者,而不是罪犯。
后记
并不建议您编写一个ActiveX控件,该控件将下载到客户机以便您访问其计算机上的信息。我们对此类程序(特洛伊木马/病毒/恶意软件)有一个名称,对于这种行为也有一个名称(非法入侵)。
因此,尽管我相信您只想阅读客户计算机的信息(而不以任何方式控制它),但请为浏览器(正确的浏览器)能够阻止您这样做而高兴。

4
关于浏览器沙盒 - 尽管应用程序可以读取设备中的数据,但人们仍然经常在智能手机/电脑上安装本地应用程序。我认为了解系统的音频音量是无害的,而且可以大大帮助网站的功能。 - Joe
1
我也明白目前这还不可能。但至少有一个简单的API,能够告诉用户计算机是否开启了声音,对于用户来说非常有用。或者像音量在0到4之间(使用整数以防止用于跟踪/检测)。如果一个网站使用音频作为其主要通信媒介,用户将会错过体验。能够清晰地呈现出关于用户需要打开声音的明确行动号召,对于那种类型的网站/应用的用户体验来说是一个巨大的胜利。 - Jonas Sandstedt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接