【问题标题】:deployJava.js not detecting JRE in IE 11deployJava.js 未在 IE 11 中检测到 JRE
【发布时间】:2013-11-20 00:21:34
【问题描述】:

我正在使用 deployJava.js 来包含这样的小程序:

<script>
    var attributes = {
        name:'ForrestGump', id:'ForrestGump',
        codebase:'java/', code:'ForrestGump',
        cache_archive:'ForrestGumpSigned.jar',
        cache_option:'Plugin',
        initial_focus:false,
        width:1, height:1 };
    var parameters = { } ;
    var version = '1.7.0' ;
    deployJava.runApplet(attributes, parameters, version);
</script>

一些使用 IE 11(在 Windows 7 中,我不确定 Windows 8.1)的用户抱怨说,即使已经安装了最新的 java,它也会自动将它们转发到 Java 下载页面(在小程序加载之前)。我已经通过使用Java's Verification applet 和设置 var version = '1.1'; 验证了这一点。在上面的 js 中,他们说不会强制使用特定版本。

验证小程序告诉我 Java 已安装,即使 version='1.1' 它仍然会重定向它们。我注意到的另一件事是Java Uninstall Tool 不会为他们加载。它说没有安装java。重启浏览器和电脑似乎对此没有影响。

以前有人遇到过这种情况吗?关于如何禁用 deployJava 无论如何都无法转发到下载页面的任何建议,或者 IE 11 解决方法。

【问题讨论】:

    标签: java internet-explorer deployjava


    【解决方案1】:

    经过一番挖掘,这似乎是由于 Microsoft 更改了 Internet Explorer 11 报告的用户代理(请参阅here)。 “deployJava.js”库有自己的浏览器检测功能(getBrowser()),它不能正确处理IE11的用户代理。

    以下来自 OpenJDK 的错误报告讨论了这个问题:

    我尝试了 deployJava.js (here) 的“官方”版本,但尚未更新修复。建议的解决方法是修改“getBrowser”方法以查找“三叉戟”以及“MSIE”。如果您不想等待 Oracle 进行更新,您可以创建自己的 deployJava.js 本地副本并替换:

    (o.indexOf("msie")!=-1)

    ((o.indexOf("msie")!=-1)||(o.indexOf("trident")!=-1))

    【讨论】:

    • 这解决了它,谢谢。很难在我的 Windows 8 机器上测试它,因为除非你使用的是 win 7 或 8.1,否则 MS 不会让你下载 IE 11。去图吧。
    • 我已经尝试过了,但似乎不适用于我。其他人也建议以管理员身份运行 IE。这似乎对某些人有用。我正在使用带有新 java u51 更新的 Windows 7 x86 和 IE 11 运行。
    • 他们的新版本 deployJava.js 在那里检查了三叉戟。但此时仍然无法正常工作。看起来该修复程序将进入 u55。希望它很快就能奏效。
    【解决方案2】:

    正如 T 先生在他们最新的 deployJava.js 中提到的那样,Oracle 已经解决了这个问题。
    但我仍然遇到错误,我仍然被重定向到http://java.com/en/download/ie_manual.jsp

    虽然我在我的 IE11 中安装了最新的 JRE。 在深入研究 deployJava.js 之后, 结果在函数 testUsingActiveX()

    if (typeof ActiveXObject == "undefined" || !ActiveXObject) {
       g("[testUsingActiveX()] Browser claims to be IE, but no ActiveXObject object?");
       return false
    }
    

    我把上面的函数修改为下面

    if("ActiveXObject" in window)
    {
      //do nothing
    }
    else if (typeof ActiveXObject == "undefined" || !ActiveXObject) {
       g("[testUsingActiveX()] Browser claims to be IE, but no ActiveXObject object?");
       return false
    }
    

    以上解决方案归功于SebLD

    【讨论】:

      【解决方案3】:

      虽然不是一个很好的解决方案,但取消设置 IE 中的兼容性视图解决了这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-26
        • 2013-09-23
        • 2021-09-04
        • 1970-01-01
        • 2019-07-13
        相关资源
        最近更新 更多