deployJava.js未在IE 11中检测到JRE

时间:2013-11-20 00:21:34

标签: java internet-explorer deployjava

我正在使用deployJava.js来包含这样的applet:

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

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

有没有人遇到过这个?关于如何禁止deployJava从转发到下载页面的任何建议,无论是什么,或者IE 11的解决方法。

3 个答案:

答案 0 :(得分:14)

经过一番挖掘后,这似乎是由于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))

答案 1 :(得分:3)

Oracle已经解决了T先生在他们最新的deployJava.js中提到的这个问题 但我仍然遇到错误,我仍然被重定向到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

答案 2 :(得分:0)

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