Использование пакета javax.script для javascript с внешним атрибутом src

Скажем, у меня есть какой-то 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 для этого?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
2 328
2

Ответы 2

Похоже, вы спрашиваете:

How can I get ScriptEngine to evaluate the contents of a URL instead of just a string?

Это точно?

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

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

URL url = new URL( "http://someplace.net/stuff.ashx" );
InputStreamReader reader = new InputStreamReader( url.openStream() );
engine.eval( reader );

Нет, насколько мне известно, файл ashx содержит объекты javascript, которые необходимы браузеру для выполнения своих задач. Но я хочу запустить это в jvm, а не в моем браузере. Таким образом, URL-адрес - это не сценарий, а источник скомпилированных объектов для использования в сценарии.

user17978 19.09.2008 19:47

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

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

Я пытаюсь запустить javascript в jvm, но классы javascript, которые я хочу использовать, не являются стандартными классами, а находятся в этом файле src.

user17978 19.09.2008 19:49

Другие вопросы по теме