JavaScript 함수를 호출하고 논문 기능에서 결과를 기대하는 브라우저에서 Java 애플릿을 실행하고 있습니다. 이것은 다음과 같은 구성과 협력 :Mac OS에서 Firefox의 Java 애플릿이 자바 스크립트와 통신 할 수 없습니까?
- 인터넷 익스플로러
- 파이어 폭스/윈도우를
- 사파리/맥
하지만 그것은 MAC OS
의 소스 파이어 폭스와 함께 작동하지 않습니다 문제는 항상 null을 반환하는 win.eval 호출 인 것 같습니다. 나는 맥 OS의 X 10.4.11
코드의 비트에 파이어 폭스 3.0.6과 함께이 테스트 :이 java.lang.NullPointerException이 (exp.toString()) 문을 트리거
JSObject win = (JSObject) JSObject.getWindow(this);
Object exp = win.eval("testfunc()");
System.out.println("exp = " + exp.toString());
) . testfunc javascript 함수는 true를 반환합니다.
나는 win.call을 사용해 보았는데 같은 결과를 얻었다.
내 애플릿 태그에는 mayscript 및 스크립트 가능한 속성이 포함되어 있습니다.
트리스탄에 대한 답변을 찾았습니다. 자신의 솔루션을 테스트 한 결과 나는 범인을 찾는데 도움이되는 간단한 테스트를 만들었습니다. 나는 방금 true를 반환 한 빈 testfunc()를 사용하여 내 테스트를 수행했다는 것을 확신했지만, 아마도 그렇게하지 않았을 것입니다. 실제 문제는이 함수가 애플릿의 public 메서드를 호출한다는 것입니다. Liveconnect는 Firefox Mac에서이 케이스를 처리 할 수없는 것 같습니다.)합니다 (getMyValue를 호출 jsfunc 왜냐면
function jsfunc() {
var myApplet = document.getElementById("applet_id");
return myApplet.getMyValue() + 5;
}
특급이 된 SomeFuncion에 null이됩니다 :
자바 클래스 :
public class MyApplet extends Applet {
public int getMyValue() {
return 5;
}
public void somefunction() {
JSObject win = (JSObject) JSObject.getWindow(this);
Object exp = win.eval("jsfunc()");
System.out.println("exp = " + exp.toString());
}
}
그리고 자바 스크립트 코드
저가 당신에게 예를 보자 애플릿의 메소드 애플릿 속성에 대한 모든 호출을 제거하면 멋지게됩니다.
내 문제를 해결하기 위해 필자는 자바 스크립트 함수의 매개 변수로 사용했던 애플릿의 모든 값을 제공하기로 결정했습니다.
자바 스크립트가 애플릿의 상태를 변경하면 항상 그렇지 않을 수도 있습니다. 행운이었습니다. :)
함수를 호출해도 문제가 발생하지 않으며 결과를 다시 얻습니다. 디버그 문을 사용하면 함수가 실행되었음을 분명히 알 수 있지만 반환 값은 손실되어 결국 "null"만 얻습니다. –