7

我正在使用 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 的验证小程序和设置 var version = '1.1';来验证这一点。在上面的 js 中,他们说不会强制使用特定版本。

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

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

4

3 回答 3

14

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

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

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

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

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

于 2013-11-20T19:58:06.330 回答
3

正如 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的解决方案

于 2014-05-02T04:22:56.403 回答
0

Although not a great solution, unsetting the compatibility view in IE solved the problem.

于 2014-11-07T09:48:42.353 回答