【发布时间】:2012-03-20 05:12:31
【问题描述】:
我创建了一个需要执行以下代码的小程序:
代码
public class Example extends JApplet {
private ServerSocket ss ;
private Socket socket;
private boolean closed;
@Override
public void init(){
try {
new Example().initialize();
} catch (IOException ex) {
Logger.getLogger(Example.class.getName()).log(Level.SEVERE, null,ex);
}
}
public void closed(){
System.out.println("Inside close");
this.closed=true;
}
public void initialize() throws IOException{
ss =new ServerSocket(5002);
while(!closed){
System.out.println("Waiting to accept request");
socket = ss.accept();
System.out.println("Request accepted");
}
}}
HTML
执行小程序的 HTML 文件片段:
<script type="text/javascript" >
function closeCall(){
document.app.closed();
}
</script>
<body>
<applet id="app" code="example.Example" archive="Example.jar" height="300" width="300">
</applet>
<input type="button" value="go" onClick="closeCall()" />
问题:单击 Go 时,我的浏览器停止响应,并且 javascript 代码也没有错误。有什么方法可以调用document.app.closed();方法吗?
【问题讨论】:
-
如果“关闭”是指希望它从页面上消失,给它一个 ID,并使用 JS 将该 ID 的“可见性”设置为“无”(检查内容在 CSS 参考中用引号括起来 - 我还没有喝咖啡)。不要试图结束虚拟机!
-
我只注意到sockets 标签。你的意思是关闭 socket?
-
顺便说一句,标准小程序没有
close()方法。你的具体是做什么的? Java 控制台和 JavaScript 错误报告组件中的输出是什么?你有一个可以看到小程序直播的 URL 吗? -
@AndrewThompson 不,没有隐藏的麻烦,我也不想关闭套接字。我想从 javascript 调用 java 中的 close 方法,当我调用它时,我的浏览器停止响应。对不起,我没有可以实时查看小程序的 URL。
-
while(true){应该读作while(!closed){。为了尽快获得更好的帮助,请发布SSCCE。您在 Java 控制台中看到Inside close了吗?
标签: java javascript applet