如何在javascript中覆盖navigator.plugins或如何将其设置为null?

时间:2012-04-10 05:31:57

标签: javascript javascript-framework

javascript中的

navigator.plugins为浏览器提供了plugins-array。是否可以将此数组设置为null?我试过了(navigator.plugins = null;),但它没有设置为null。另外,我尝试将其设置为空数组(navigator.plugins = new Array();

如果可以的话,这是一个好习惯吗?

3 个答案:

答案 0 :(得分:2)

在Chrome中,可以通过将window.navigator设置为null来执行此操作。但是,我不确定你为什么会这样做。由于您正在处理JavaScript,因此有人可以使用调试器来阻止代码运行并拦截此代码,然后才能将其设置为null。

此外,导航器对象通常包含有关客户端计算机的信息,如果我是用户,我很可能比您的服务器了解更多关于我的计算机的信息,因此禁用此功能实际上没有任何可衡量的优势。可以看到。

此外,这必须发生在每个页面加载上。

最后,我不知道其他浏览器会如何处理这个问题,但是你很可能在其他浏览器中尝试这样做时会遇到麻烦。

简而言之,我认为这不是一个好习惯;但是,您没有提供有关您为什么要这样做的详细信息。没有这些信息,我不能给你一个公平的答案,除了它不是一个好主意。所以你当然需要检查你为什么要这样做,并确定它是否真的值得麻烦。

答案 1 :(得分:1)

有些Web应用程序首先检索浏览器名称。 UIWebView的导航器对象不返回足够的信息。 例如navigator.userAgent返回

  

Mozilla / 5.0(iPad; CPU OS 9_2,如Mac OS X)AppleWebKit / 601.1.46   (KHTML,像Gecko)Mobile / 13C75

这些网络应用程序无法从上述信息中检测到浏览器名称,并抛出异常不支持的浏览器。

为了处理这种情况,我覆盖了下面给出的导航器对象,是的,Web应用程序能够完美地运行。 这在firefox中失败了,但我的要求是仅支持UIWebView

i

答案 2 :(得分:-2)

我从来没有听说有人想把插件数组设置为null,坦率地说我不明白如果你这样做会带来什么好处。就像jmort253所说,可以在chrome中将其设置为null,但在其他浏览器中你可能无法做到。请记住,navigator.plugin不是JavaScript数组,而是pluginArray