2012-03-29 55 views
0

我想在HTML5和JavaScript使用Java应用程序,但是当我尝试以下方法铬老是死机的Java方法调用:铬坠毁在JavaScript中

HTML5文件我有这样的:

<FORM> 
<INPUT type="button" value="call JAVA" onClick = "test()"> 
</FORM> 

<object name="application" type="application/x-java-applet" height="300" width="550" > 
<param name="code" value="loader"/> 
<param name="java_arguments" value="-Djnlp.packEnabled=true"/> 
</object> 

的JavaScript文件我用这个函数(的onclick试验(+) - 功能)

function test() { 
    var app = document.getElementById("applet_test"); 
    alert("Screen Dimension\r\n width:" + 
     app.getScreenWidth() + " height:" + 
     app.getScreenHeight()); 
} 

最后这是applet_test.java文件:

import java.applet.*; 
import java.awt.*; 

public class applet_test extends Applet 
{ public int getScreenWidth() { 
     return Toolkit.getDefaultToolkit().getScreenSize().width; 
     } 
     public int getScreenHeight() { 
     return Toolkit.getDefaultToolkit().getScreenSize().height; 
     } 
    public void main(String [] args) { 

    } 
} 

有谁知道为什么会不工作? Eclipse也是抱怨使用applet的HTML5文档中:

Element (applet) is obsolete. Its use is discouraged in HTML5 

难道这引起麻烦,如果是这样,你怎么可以得到一个元素相同的结果?

+0

我在帖子中添加了警告 – Consec 2012-03-30 12:15:30

+0

元素(applet)已过时。在HTML5中不鼓励使用它,这很奇怪,因为HTML代码片段使用了一个'object'元素。但是,除此之外,最好的解决方案是使用[applet info。中提到的'deployJava.js'嵌入applet。页面(http://stackoverflow.com/tags/applet/info)。它被设计用于在任何浏览器中加载它。它检查用户是否具有运行applet所需的最小Java(如果不是,则帮助它们更新),然后以任何形式写入任何元素,那个浏览器。哦,它对验证服务是“隐形的”。 ;) – 2012-03-30 12:25:30

+1

@安德鲁汤普森了不起的信息。我没有意识到这一点。 – rickz 2012-03-30 15:32:19

回答

2

这对我有用。

<!DOCTYPE html> 
<html lang="en"><FORM> 
<head> 
<script> 
function test() { 
    var app = document.applet_test; 
    alert("Screen Dimension\r\n width:" + app.getScreenWidth() 
     + " height:" + app.getScreenHeight()); 
} 
</script> 
<body> 
<INPUT type="button" value="call JAVA" 
    onClick = "test()"> 
</FORM> 
<object name="applet_test" type="application/x-java-applet" height="300" width="550" > 
<param name="code" value="loader.class"/> 
</object> 
</body> 
</html> 
+0

谢谢你的代码,我知道它的工作。现在我看到了java加载屏幕,但它不会停止加载。也许这是因为我给了对象一个尺寸,而没有显示任何东西。这也可能是java文件本身的一个问题(我用当前版本更新了我的版本) – Consec 2012-03-30 00:18:08

+0

你是什么意思,但它不会停止加载? – rickz 2012-03-30 00:27:55

+0

加载时显示此图片:http://www.google.be/imgres?imgurl = http://www.w-uh.com/images/0301/Java_loading.gif&imgrefurl=http://www.w- uh.com/posts/090629a.html&h=167&w=158&sz=4&tbnid=UVqoIWja6rt6GM:&tbnh=96&tbnw=91&zoom=1&docid=uT8Zn-OCAbdDlM&hl=nl&sa=X&ei=BgR1T43eEMaS0QWimeC5DQ&ved=0CE0Q9QEwBQ&dur=237并保持 – Consec 2012-03-30 00:53:58

1

Change var app = document.getElementById(“applet_test”);到

var app = document.applet_test; 

Eclipse is also complaining about the use of an applet in an html5-document.

大概是因为applet标记已被弃用。看看底部的 https://eyeasme.com/Shayne/HTML5_APPLETS/

+0

你给我的链接肯定有帮助,但它无法解决我所有的问题。我将我的小程序更改为更一般的对象,并为我的java类添加了主要过程。在这个例子中唯一不能找到的是如何在javascript中调用该java类中的方法。 (我修改了我的帖子) – Consec 2012-03-29 22:57:40

+0

*“你给我的链接肯定有帮助,但它确实解决了我所有的问题。”*在SO中,它应该是'每个问题一个答案'。请不要指望我们在一个问题中将这个applet的'15个问题'排除在外。一次做一件事情,标记正确的答案,然后继续下一部分。 – 2012-03-30 03:25:40

+0

**从链接:** *“新方法:HTML5中的Java Applet(使用对象标签)”*实际上,Sun/Oracle有一段时间提供了[applet info。中提到的'deployJava.js'。页面(http://stackoverflow.com/tags/applet/info)。使用它而不是对'applet'或'object'元素进行硬编码。 – 2012-03-30 03:28:53