나는 오늘 Javascript_Java_Interaction에 대한 기사를 보았다 ========================================================================================================== =================Javascript_Java_Interaction 애플릿 "코드베이스"문제
[C:/Dir_Fit/Javascript_Java_Interaction.html]
<FRAMESET ROWS="100%,*">
<FRAME NAME="mainFrame" SRC="Javascript_Java_Interaction_Visible_Page.html" border=0>
<FRAME NAME="scriptFrame" SRC="Javascript_Java_Interaction_Invisible_Page.html" border=0>
</FRAMESET>
--------------------------------------------------------------------------------------------
[C:/Dir_Fit/Javascript_Java_Interaction_Invisible_Page.html]
<HTML>
<HEAD>
<SCRIPT>
function replace(s,t,u)
{
i=s.indexOf(t);
r="";
if (i==-1) return s;
r+=s.substring(0,i)+u;
if (i+t.length<s.length) r+=replace(s.substring(i+t.length,s.length),t,u);
return r;
}
function getAndSendMessage()
{
theMessage=document.location.search.substring(1,255)
if (theMessage.length>0)
{
// replace all '+" by space
theMessage=replace(theMessage,'+',' ')
window.parent.mainFrame.showMessage(unescape(theMessage))
}
}
</SCRIPT>
</HEAD>
<BODY onLoad="getAndSendMessage();"></BODY>
</HTML>
-----------------------------------------------------------------------------------------
[C:/Dir_Fit/Javascript_Java_Interaction_Visible_Page.html]
<HTML>
<HEAD><SCRIPT>function showMessage(s) { alert(s) }</SCRIPT></HEAD>
<BODY>
<H1>Simple Java - Javascript interaction</H1><P>
<APPLET CODEBASE="file://C:/Dir_Fit/build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>
</BODY>
</HTML>
-----------------------------------------------------------------------------------------
Source : [C:/Dir_Fit/src/Javascript_Java_Interaction_Demo.java]
class : [C:/Dir_Fit/build/classes/Javascript_Java_Interaction_Demo.class]
import java.applet.Applet;
import java.awt.*;
public class Javascript_Java_Interaction_Demo extends Applet
{
TextField aMessage;
Button sendButton;
public void init()
{
aMessage=new TextField(20);
add(aMessage);
sendButton=new Button("Send to Javascript");
add(sendButton);
}
public boolean action(Event e,Object o)
{
if (e.target.equals(sendButton))
{
try { getAppletContext().showDocument(new java.net.URL(getCodeBase(),"Javascript_Java_Interaction_Invisible_Page.html?"+java.net.URLEncoder.encode(aMessage.getText())),"scriptFrame"); }
catch (Exception ex) { ex.printStackTrace(); }
}
return true;
}
}
========================== ========================================================================================================== ==============
[Javascript_Java_Interaction] 페이지에 애플릿이 표시되었습니다. 나는 텍스트를 입력하고 버튼을 클릭하면 HTML, 그러나 아무 일도 발생하지 않습니다, 문제는 다음 줄에 있습니다
<APPLET CODEBASE="file://C:/Dir_Fit/build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>
그래서 나는 HTML 파일 [C와 같은 디렉토리에 클래스 파일을 복사 :/Dir_Fit /]로 변경하고 위의 행을 다음으로 변경했습니다.
<APPLET CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>
이제는 경고 창이 표시됩니다.
내 질문에 왜 내가 코드베이스를 지정했을 때 작동하지 않습니까? Java 문서에 따르면 클래스 파일이 다른 디렉토리에 있으면 코드베이스로 표시 할 수 있습니다. 애플릿이 표시되지만 텍스트를 입력하고 버튼을 클릭해도 아무 것도 나타나지 않습니다. 다른 방법으로 지정하려고 시도했습니다. 코드베이스 :
<APPLET CODEBASE="file:///C:/Dir_Fit/build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>
<APPLET CODEBASE="C:/Dir_Fit/build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>
<APPLET CODEBASE="build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>
<APPLET CODE="C:/Dir_Fit/build/classes/Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>
아직 작동하지 않는 이유는 무엇입니까? 나는 클래스 파일이 html과 같은 디렉토리에 있기를 원하지 않는다. 그 수정은 뭐니?
프랭크