2013-11-20 3 views
7

Я использую deployJava.js включить апплеты, как так:deployJava.js не обнаруживая JRE в IE 11

<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, я не уверен, что окна 8.1) жаловались, что он автоматически перенаправит их на страницу загрузки Java (до загрузки апплета), даже если последняя java уже установлена. Я проверил это, используя как Java's Verification applet, так и установив var version = '1.1'; в js, выше которого, по их словам, не будет принудительной конкретной версии.

Апплет проверки говорит мне, что Java установлен, и даже с версией = '1.1' он все еще перенаправляет их. Еще одна вещь, которую я заметил, это то, что Java Uninstall Tool не загружается для них. Он говорит, что java не установлен. Перезагрузка браузера и ПК, похоже, не влияет на это.

Кто-нибудь сталкивался с этим раньше? Любые советы о том, как я могу отключить deployJava от пересылки на страницу загрузки независимо от того, что происходит, или же обход IE 11.

ответ

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))

+0

Это исправлено, спасибо. Трудно было проверить его на моей машине с Windows 8, так как MS не позволит вам загружать IE 11, если вы не выиграли 7 или 8.1. Идите фигуру. –

+0

Я попытался это сделать и, похоже, не работает со мной. Другие предложили запустить IE как администратор. Кажется, что это сработало для некоторых. Я запускаю Windows 7 x86 и IE 11 с новым обновлением java u51. – skift

+0

их новые версии deployJava.js имеют чеки там для трезубца. но на данный момент все еще не работает. Похоже, это исправление перейдет в u55. Надеюсь, это сработает тогда и скоро. – skift

3

Oracle уже исправить эту проблему, как упоминал г-н Т в своем последнем deployJava.js.
Но я все еще сталкиваюсь с ошибкой, я все еще был перенаправлен на http://java.com/en/download/ie_manual.jsp

Хотя я установил последнюю версию JRE в своем IE11. После копания в 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 
} 

Solution выше кредита SebLD

0

Хотя не отличное решение, сняв представление о совместимости в IE, решила проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^