【问题标题】:Java Installed vs Java Enabled in browser在浏览器中安装 Java 与启用 Java
【发布时间】:2013-06-11 14:55:17
【问题描述】:

有没有办法检测你的机器上是否安装了java,或者浏览器是否禁用了java。我们在应用程序中使用 java applet,但在加载 applet 之前,我们使用“deployJava.js”。可悲的是,即使在浏览器上禁用了 Java,它也会显示未安装 Java。

那么有没有办法区分是安装Java还是禁用Java,最好使用javascript。我也尝试过使用“navigator.javaEnabled()”,但它给了我与使用“deployJava.js”相同的结果。

【问题讨论】:

  • 我怀疑这是可能的。
  • 只需检查是否已禁用...。无论如何,如果通过 javascript 禁用它,您将无法启用它。希望之前的帖子能帮助stackoverflow.com/questions/14871287/…

标签: java javascript applet deployjava


【解决方案1】:

你不能。

如果可以的话,那会很烦人。已经有足够多的信息从浏览器泄漏到页面,如果它开始告诉人们我安装了什么但我表面上禁用了,那将非常烦人。

我想为此设想一个 API 是可能且有用的,但在当前状态下没有任何插件:要么该插件在这里被使用,要么它不是。安装与否无所谓。

我想您必须通过在面向用户的消息中说明需要安装或启用 Java 来解决此问题。或者您可以提供下载一个诊断工具来运行它并在本地检查它,这可能是另一种可行的选择,尽管需要执行明显令人讨厌的额外步骤(以及一个额外的工具供您支持)。

【讨论】:

    【解决方案2】:
    1. 添加到相关 HTML 页面的重定向。重定向到javaNotEnabledOrNotInstalled.html(但想一个不那么描述性和愚蠢的名字)。
    2. 小程序早期init(),调用JS取消重定向。

    还要注意,在传统的小程序元素中..

    <applet 
      code=.. 
      width=.. 
      height=.. 
      alt='Java is installed but disabled!'>
    No Java Plug-In installed in this browser.  Get Java free from..
    </applet>
    

    在这种情况下,如果根本没有安装 Java,用户应该会看到..

    此浏览器中未安装 Java 插件。从...中免费获取 Java。

    但是,如果 Java 已安装但被禁用,他们应该会看到..

    Java 已安装但已禁用!

    【讨论】:

    • 有趣。是跨浏览器吗?这似乎高度依赖于他们在这种情况下选择如何处理标签,而不是由文档编码。
    • “这似乎高度依赖于他们在这种情况下选择如何处理标签” 它是一个元素而不是一个标签,它的用途由W3C。 OTOH,我认为第一种方法更可靠。
    • 不确定在这种情况下我是否明白元素和标签之间的区别。我知道小程序是规范的,但我从未阅读过(我现在在规范中看不到它)如果没有找到相应的插件,行为将是显示元素的文本内容,或者显示替代文本如果无法加载占位符,并且禁用的插件会导致后者。考虑到您在嵌入式 Java 组件方面的专业知识,我很乐意相信您可以正常工作。只是不确定它是否是可靠的解决方案。再说一次,在浏览器中,遵循规范并不能保证可靠性......
    • “不确定我是否明白你在这种情况下元素和标签之间的区别。” 一个是对的,另一个......不是。 “再说一次,在浏览器中,遵循规范并不能保证可靠性......”同意。
    • 很抱歉打扰您,但据我所知,在文本上下文标签和元素中描述的是同一件事。如果您在谈论对象,那么显然只有元素是有效的。我们在这里谈论来源。或者如果是其他原因,感谢您澄清我的盲点。
    【解决方案3】:

    【讨论】:

    • @sissonb:你说得对,它是 navigator.plugins,带有“s”,适用于 FF 和 chrome,启用时应包含 java。
    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多