如何重写navigator.plugins在JavaScript或如何设置空?(How to ove

2019-07-28 21:42发布

navigator.plugins在JavaScript提供插件阵列的浏览器。 是否有可能设置这个数组为空? 我想,( navigator.plugins = null;但它并没有设置为null。 另外,我试图将它设置为空数组( navigator.plugins = new Array();

此外,如果这是可能的,这是一个好的做法呢?

Answer 1:

在Chrome中,可以通过设置来做到这一点window.navigator为空。 但是,我不知道你为什么会这么做。 既然你处理JavaScript的,这将是可能有人使用调试器停止运行您的代码和拦截该代码你能够将它设置为null之前。

此外,导航对象一般包含了客户端计算机的信息,如果我是用户,我最有可能了解我的电脑比你的服务器执行,因此禁用这一不会真的有任何可测量的优势,我可以看到。

此外,这会对每一个页面加载的情况发生。

最后,我不知道其他浏览器将如何处理这个问题,但你说的可能会碰到试图做到这一点在其他浏览器的麻烦。

总之,我不认为这是一个很好的做法; 但是,你没有提供你为什么要做到这一点的详细信息。 如果没有这些信息,我不能给你其他一个公平的答案比这不是一个好主意。 所以,你当然需要检查你为什么要做到这一点,并确定它是否真的值得冒这个险。



Answer 2:

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

的Mozilla / 5.0(ipad公司; CPU OS 9_2,例如Mac OS X)为AppleWebKit / 601.1.46(KHTML,例如Gecko)移动/ 13C75

这些Web应用程序无法从上述信息中检测浏览器名称和引发异常支持的浏览器。

为了处理这种情况我重写导航对象下面给出肯定的Web应用程序能够完美运行。 这是失败的,在Firefox,但我的要求是只支持一个UIWebView

var __originalNavigator = navigator;
navigator = new Object();
navigator.__proto__ = __originalNavigator;
navigator.__defineGetter__('userAgent', function () { return "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"; });
navigator.__defineGetter__('plugins', function () { return []; });


Answer 3:

我从来没有听说过任何人想要设置的插件数组为空的,很坦率地说,我不明白什么好处,如果你这样做会产生。 就像jmort253说,可以将其设置为镀铬空,但在其他浏览器,你可能不能够。 但请记住这navigator.plugin不是一个JavaScript数组,但一个pluginArray



文章来源: How to override navigator.plugins in javascript or how to set it null?