navigator.plugins
在 javascript 中为浏览器提供了 plugins-array。是否可以将此数组设置为空?我试过那个(navigator.plugins = null;
)但它没有设置为空。另外,我尝试将其设置为空数组(navigator.plugins = new Array();
)
另外,如果这是可能的,这是一个好习惯吗?
navigator.plugins
在 javascript 中为浏览器提供了 plugins-array。是否可以将此数组设置为空?我试过那个(navigator.plugins = null;
)但它没有设置为空。另外,我尝试将其设置为空数组(navigator.plugins = new Array();
)
另外,如果这是可能的,这是一个好习惯吗?
window.navigator
在 Chrome 中,可以通过设置为 null来做到这一点。但是,我不确定您为什么要这样做。由于您正在处理 JavaScript,因此有人可能会使用调试器来阻止您的代码运行并在您将其设置为 null 之前拦截此代码。
此外,导航器对象通常包含有关客户端计算机的信息,如果我是用户,我很可能比您的服务器更了解我的计算机,因此禁用它实际上不会有任何我可以看到的可衡量的优势。
此外,这必须在每次页面加载时发生。
最后,我不知道其他浏览器会如何处理这个问题,但是你在其他浏览器中尝试这样做很可能会遇到麻烦。
简而言之,我认为这不是一个好习惯。但是,您没有提供有关为什么要这样做的详细信息。没有这些信息,我不能给你一个公平的答案,除非这不是一个好主意。所以你当然需要检查你为什么要这样做,并确定它是否真的值得麻烦。
有一些 Web 应用程序首先检索浏览器名称。UIWebView 的导航器对象没有返回足够的信息。例如 navigator.userAgent 返回
Mozilla/5.0(iPad;CPU OS 9_2,如 Mac OS X)AppleWebKit/601.1.46(KHTML,如 Gecko)Mobile/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 []; });
我从来没有听说过有人想将插件数组设置为空,坦率地说,我不明白如果你这样做会产生什么好处。就像 jmort253 说的那样,可以在 chrome 中将其设置为 null,但在其他浏览器中您可能无法做到。请记住,尽管 navigator.plugin 不是 JavaScript 数组,而是 pluginArray