2013-09-13 6 views
0

Я пытаюсь создать очень простой Java-апплет, чтобы попробовать использовать функции Java в веб-браузере. проблема в том, что я не могу получить какие-либо функции из своего апплета. Я пробовал десятки уроков и ответов на этом сайте, но ничего не дает никакого другого результата. В браузере всегда сказано, что AppName.FunctionName не является функцией.Функции Java-апплета недоступны Javascript

Вот мой HTML ...

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4 /strict.dtd"> 
<html> 
<head> 
<meta content="text/html; charset=ISO-8859-1" 
http-equiv="content-type"> 
<title>Test Applet</title> 
</head> 
<body onload="test()"> 
<applet code="TestApplet.class" name="AppTest" 
height="350" width="100"></applet> 
<script language="Javascript"> 
function test(){ 
alert("Attempt 1"); 
var elem= document.getElementById('AppTest'); 
alert(elem); 
elem.test(); 
alert("Attempt 2"); 
document.AppTest.test(); 
} 
</script><br> 
</body> 
</html> 

и вот мой Java-код ...

import javax.swing.JApplet; 

public class TestApplet extends JApplet { 

    public String sayHi(){ 
     return "hello"; 
    } 
    public void test(){ 
     System.out.println("You did it bro"); 
    } 
} 

Любые идеи, почему это, кажется, не делать ничего? Примечание: Я проверяю его с помощью FireFox

EDIT:

Так, пытаясь приблизиться к рабочему раствору, я изменил свой HTML следующим образом

<html> 
<head> 
    <title>Test Applet</title> 
</head> 
<body> 
<applet code="AppPack.TestApplet.class" 
codebase="TestApplet.jar" name="AppTest" 
scriptable="true" height="350" width="100"></applet> 
<script language="Javascript">function test(){ 
document.AppTest.test(); 
} 
</script><br> 
<input name="tryit" value="TryIt" onclick="test()" 
type="button"> 
</body> 
</html> 

Я пытался использовать codebase, видя, как включение в него рисует апплет на холст, однако в поле просто содержится ошибка, описывающая исключение класса, но без него я получаю пустую страницу с помощью только кнопки. ВСЕ файлы находятся в одном каталоге, и если я тестирую апплет в eclipse, он генерирует html для запуска апплета в средстве просмотра, но эти html-файлы также не загружаются, если их открывать просто с помощью броузера. Пожалуйста, может кто-нибудь пролить свет на то, что я делаю неправильно?

+0

Функция тестирования называется слишком скоро. - Апплет не должен иметь конструктора. Поместите этот код в 'init()' и объявите его 'scriptable = 'true'' при развертывании. Зачем писать апплет? Если это связано со спецификацией. учителем, пожалуйста, обратитесь к [Почему учителя CS должны прекратить преподавать Java-апплеты] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/). –

+0

Можете ли вы привести мне пример того, что вы имеете в виду? Апплет для проекта, связанного с работой, мы хотим иметь доступ к некоторым утилитам Java на стороне сервера для внутреннего использования. – adam5990

+0

* «Можете ли вы привести мне пример того, что вы имеете в виду?» * Можете ли вы ответить на мой вопрос - а именно ** «Зачем писать апплет?«** –

ответ

2

Функция тестирования называется слишком скоро.

Апплет не обязательно загружается и запускается к моменту вызова функции onload. Это действительно означает только, что браузер прочитал весь HTML-код, связанный с этой страницей, а не только изображения, (внешние) стили или сценарии, или вещи, которые могут быть созданы как результат загрузки страницы (например, апплет).

Положите вызов методу test() на кнопку, которую вы нажимаете, подождите несколько секунд после загрузки страницы и повторите попытку.


быть также обязательно объявим его scriptable='true' при развертывании. Например:

<applet 
    code="TestApplet" 
    name="AppTest" 
    scriptable="true" 
    height="350" 
    width="100"> 
</applet> 

Большинство браузеров позволят вам вызывать апплет без него, но лучше всего добавить его для остальных.

+0

Это решение было верным, сначала это не сработало для меня из-за проблемы с сервером, о которой я не знал. Благодарю. – adam5990

Смежные вопросы