Использование пакета javax.script для javascript с внешним атрибутом src - PullRequest
1 голос
/ 18 сентября 2008

Скажем, у меня есть некоторый javascript, который, если запустить его в браузере, будет напечатан так ...

<script type="text/javascript"
    src="http://someplace.net/stuff.ashx"></script>

<script type="text/javascript">
   var stuff = null;
   stuff = new TheStuff('myStuff');
</script>

... и я хочу использовать пакет javax.script в java 1.6 для запуска этого кода в jvm (не в апплете) и получения материала. Как сообщить движку, что источник создаваемых классов находится в удаленном файле .ashx?

Например, я знаю, что написать код Java как ...

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");

engine.eval( "stuff = new TheStuff('myStuff');" );
Object    obj = engine.get("stuff");

... но движок «JavaScript» по умолчанию ничего не знает о классе TheStuff, поскольку эта информация находится в удаленном файле .ashx. Могу ли я сделать так, чтобы это выглядело в приведенной выше строке src?

Ответы [ 2 ]

2 голосов
/ 19 сентября 2008

Кажется, вы спрашиваете:

Как я могу получить ScriptEngine для оценки содержимого URL, а не только строки?

Это точно?

ScriptEngine не предоставляет возможности для загрузки и оценки содержимого URL, но это довольно просто сделать. ScriptEngine позволяет передавать объект Reader, который он будет использовать для чтения сценария.

Попробуйте что-то вроде этого:

URL url = new URL( "http://someplace.net/stuff.ashx" );
InputStreamReader reader = new InputStreamReader( url.openStream() );
engine.eval( reader );
0 голосов
/ 19 сентября 2008

Вы пытаетесь получить доступ к объекту javascript на странице браузера из апплета java 1.6? Если так, то вы поступаете неправильно. Это не то, для чего нужен скрипт-движок. Он предназначен для запуска javascript внутри jvm, а не для апплета для доступа к javascript из браузера.

Вот запись в блоге , которая может вас куда-то найти, но, похоже, поддержки нет.

...