【问题标题】:How to override navigator.plugins in javascript or how to set it null?如何在 javascript 中覆盖 navigator.plugins 或如何将其设置为 null?
【发布时间】:2012-04-22 10:27:52
【问题描述】:

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

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

【问题讨论】:

  • 为什么要发给null?
  • 我正在开发一个使用 UIWebView 作为浏览器的 iphone 应用程序。我必须隐藏浏览器的插件详细信息。

标签: javascript javascript-framework


【解决方案1】:

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

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

此外,这必须在每次页面加载时发生。

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

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

【讨论】:

  • 感谢您的详细解释。我正在开发一个使用 UIWebView 作为浏览器的 iphone 应用程序。我必须隐藏浏览器的插件详细信息。我不想将 navigator 设置为 null,而只想将 plugins 数组设置为 null。这在javascript中可能吗?
  • 我还是不明白你为什么要隐藏插件细节。我确实尝试仅将插件设置为空。这似乎不可能。祝你好运!
  • 也许我缺乏必要的理解来掌握你想要做什么,但你不只是对自己隐藏这些细节吗?难道其他所有 iPhone 应用程序都不能检测并存储设备信息吗?如果您不想阅读设备信息,请不要阅读。我不明白只对自己隐瞒一些事情的意义。再说一次,也许这只是我......
  • 不幸的是,"window.navigator=null" 今天似乎不再适用于桌面版 Chrome。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    有些网络应用程序首先检索浏览器名称。 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

    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 []; });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-13
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2020-04-19
      • 2014-08-22
      • 2013-01-01
      相关资源
      最近更新 更多