Я работал над проектом, который требует связи в обоих направлениях между Java и JavaScript. Мне успешно удалось заставить его работать под всеми браузерами в OS X, но теперь я столкнулся с проблемой заставить это работать под Windows под любым браузером. На данный момент это просто не работает.
Мне просто интересно, есть ли что-то особенное, что мне нужно сделать, чтобы JavaScript взаимодействовал с Java?
Код моего апплета выглядит так:
<applet id='theApplet'
code="com/company/MyApplet.class"
archive="SMyApplet.jar"
height="50" width="900"
mayscript="true" scriptable="yes">
Your browser is ignoring the applet tag.
</applet>
После загрузки апплета я пытаюсь вызвать на нем такие функции:
alert("Call some java:" + theApplet.testFunc());
И в консоли firebug я получаю следующую ошибку:
theApplet.testFunc is not a function
Я могу подтвердить, что в IE это тоже не работает.
Когда страница загружается, у меня открыта консоль Java, и я вижу, что апплет успешно загружается и готов к приему вызовов.
Любая помощь будет принята с благодарностью!
Приветствия
Обновление: вот урезанный Java-код, отображающий общедоступный API, который я пытаюсь вызвать.
package com.company;
import com.google.gson.Gson;
import java.applet.*;
import java.io.*;
import java.net.*;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.*;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.*;
import netscape.javascript.*;
public class MyApplet extends Applet implements Runnable
{
public void init()
{
JSON = new Gson();
isReadyVar = 0;
workThread = null;
}
public void start()
{
}
public void run()
{
System.out.println("Done");
}
public void stop()
{
}
public void destroy()
{
}
/* Public API */
public int testFunc()
{
return 200;
}
}
Обновление [решено]:
Я понял, в чем проблема. Оказывается, что библиотека Gson, которую я использовал, не была подписана; но моя собственная банка была Браузеры на окнах требуют, чтобы все библиотеки были подписаны; поэтому я упаковал Gson с моими java-файлами и подписал лот, и это решило проблему! Спасибо всем за помощь!