2012-06-16 2 views
3

jquery, jqueryui, ajaxify 및 많은 jquery 확장을 사용하여 웹 응용 프로그램을 작성하고 있습니다. 응용 프로그램의 어느 시점에서 Java 애플릿을 사용해야합니다. 애플릿은 ajax 호출을 통해 실행됩니다. jquery.load가 애플릿 코드를 생성하는 페이지를로드한다고 가정 해 봅시다. 그런 다음 Java가 앱을 실행하는 컴퓨터에 설치되어 있는지, 1.7 버전 이상인지 확인하고 싶습니다. 이 기능은 제한된 수의 사용자 및 특정 상황에서만 사용되므로 애플릿을 사용하는 경우에만 감지가 발생해야합니다.AJAX 응용 프로그램에서 Java 및 해당 버전을 감지하는 방법

이 스크립트는 ajax 호출을 통해 실행되도록 설계되지 않았기 때문에 deploy.js를 사용할 수 없으며 단순히 실패합니다. 정말 필요한 때, 즉 사용자가 애플릿을 실행하려고 할 때만 자바를 감지하고 싶습니다.

어떻게하면됩니까?

귀하의 도움에 감사드립니다.

+0

어떻게 navigator.javaEnabled()''에 대한 자바 '를 설치하고 경우에 document.applets [0] .Version'를 검출 버전을 얻으시겠습니까? jQuery에는 순수 자바 스크립트가 필요하지 않습니다. – VisioN

+0

고맙습니다. navigator.javaEnabled()가 IE, 버전 9 이상에서 올바르게 작동하지 않습니다. – norbi771

답변

0

마지막으로 자바가 설치되어 있는지 감지하는 방법을 찾았습니다. 처음에는 navigator.javaEnabled()를 시도했지만 Internet Explorer에서는 제대로 작동하지 않았습니다. 그런 다음 Java 배치 툴킷을 시도했지만 ajax를 통해 가져온 페이지와 호환되지 않는 window.write로 인해 성공하지 못했습니다. 그런 다음 odiszapc 조언에 따라 Java 배치 툴킷을 사용자 정의하려고 시도했지만, 수정되지 않은 Java 개발 툴킷을 사용하여 결국 versionCheck 메소드를 사용했습니다.

java가 감지되지 않으면 사용자에게 JRE를 다운로드하여 설치하라는 메시지가 표시되고 링크가 제공됩니다. 올바른 Java 버전이 설치된 경우 매개 변수 javaOK = 1 인 ajax를 통해 서브 페이지가 다시로드됩니다. 이 경우 짧은에는 자바 감지, 순수한 애플릿 태그가 없습니다 :


    $SuccessUrl = FileName . "?javaOK=1&" . $_SERVER['QUERY_STRING']; 
    (...) 
    $java_detect=EOQ (heredoc shoud be here, some tags don't work) 
     
     var version = '1.7'; //required version 

     var check = deployJava.versionCheck(version+"+"); //1.7 and higher 
     if(!check){ 
      $("#sign_dialog").html("$java_err"); //wrong java or no java at all 
     }else{ 
      $("#sign_dialog").load("$SuccessUrl"); 
     } 
     
    EOQ; 
    (...) 
     if(isset($_GET['javaOK']) && $_GET['javaOK']=='1'){ 
      echo $applet; 
     }else{ 
      echo $java_detect; 
     } 

0

어쨌든 Java Deployment Toolkit을 사용해야합니다. 몇 가지 특정 검사가 필요할 때 java_deploy.js를 열고 어떻게 작동하는지 확인하십시오. 정말 이해하기가 어렵지 않습니다. 예를 들어 Chrome에서 특정 태그를 인증 uid과 함께 삽입합니다. 복잡한 것은 없습니다. 그런 다음이 코드를 수동으로 실행합니다.

deploy.js의 끝에서 페이지로드 후에 Java 검사 만 시작합니다. 하나의 메소드 호출. 방금이 코드를 제거하고 직접 내 코드로 실행했습니다.

+0

배포 툴킷은 deploy.js를 사용하며 질문에 언급 된대로 작동하지 않습니다. 툴킷의 배포 기술은 window.write를 사용하거나 ajax를 통해 가져온 페이지와 모순됩니다. 그것은 애플릿 코드가있는 ajax 가져온 페이지에서 사용할 수없는 방법입니다. – norbi771

+0

예, 페이지를 다시로드하는 document.write를 사용합니다. juse는이 코드를 $ (document.body) .append()로 제거했으며 모든 것이 잘 동작합니다. 예, deploy.js를 다시 작성해야합니다. – odiszapc

+0

나는 여기서 탐지를 담당하는 함수를 찾고있다. http://www.java.com/js/deployJava.txt는 이전에 살펴 봤지만, 어떤 이유로 그 기능을 볼 수 없다. 필자는 자동 설치 기능, 순수 감지 기능을 원하지 않습니다. JRE가 1.7보다 작 으면 사용자에게 최신 JRE를 설치하거나 시스템 관리자에게 문의하라고 지시합니다. – norbi771

관련 문제