我正在使用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下载页面(在applet加载之前)。我已经通过使用Java's Verification applet和设置var version ='1.1'来验证了这一点;他们说上面的js中不会强制使用特定版本。

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

有人遇到过吗?无论如何,无论如何,我都可以禁止我如何禁止deployJava转发到下载页面的任何建议,否则IE 11都可以解决。

最佳答案

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

OpenJDK的以下错误报告讨论了此问题:

  • JDK-8026474
  • JDK-8028629

  • 我尝试了deployJava.js的“正式”版本(here),但尚未使用修复程序进行更新。建议的解决方法是修改“getBrowser”方法以查找“MSIE”之外的“三叉戟”。如果您不想等待Oracle进行更新,则可以创建自己的deployJava.js本地副本并替换:
    (o.indexOf("msie")!=-1)

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

    07-24 15:10