Доступ з JavaScript до змінних

Для доступу до класів і пакетів Java в JavaScript є об'єкт
Packages. Використовуючи властивості цього об'єкта, можна отримати доступ до
будь-якого класу будь-якого пакета, підтримуваного навігатором. Напр., Для доступу до
пакетам java, sun і netscape використовуються
наступні оператори: Packages.java, Packages.sun,
Packages.netscape. Строго кажучи, при зверненні до цих трьох пакетів
використання Packages необов'язково, чого не можна сказати про
інших пакетах. Так,
Packages.java.lang.System.out.println(myString) еквівалентно
java.lang.System.out.println(myString).

Приклад:

var myDate = new java.util.Date();
var wnd = open();
var doc = wnd.document;
doc.open();
doc.write ("<" + "script language =" JavaScript1.1 ">");
doc.write("var myDate = new java.util.Date();");
doc.write("function showStat(param) {");
doc.write("alert(param)}");
doc.write("<" + "/script>");
doc.write(myDate + "<br>");
for (var i in myDate)
doc.write ("<a href="javascript:showStat(myDate." + i + "())">" +
i + "</a><br>");
doc.write ("<p> <a href="javascript:close()"> Закрити </ a>");
doc.close();

Натиснувши на кнопку, можна побачити всі змінні і методи знову
створеного об'єкта (увага! натискання на гіперпосилання в створюваному документі
успішно виконає тільки ті методи, які не беруть параметрів (чому,
З наведеного коду видно)):



Увага! Не використовуйте будь-які методи Java, які
можуть кидати виключення, тому що в JavaScript немає обробки виключень, і код,
викликає такі методи, не пройде: буде виведено відповідне
повідомлення


Управління Java-аплетами і впровадженими об'єктами

Для звернення до Java-апплетам в документі можна використовувати
один з трьох шляхів:

Напр., Якщо в документі присутній єдиний
аплет:

<APPLET CODE=MyAplet.class NAME="myapplet" …>
…</APPLET>

то наступні три фрагменти коду повернуть посилання на даний
аплет:

Після отримання посилання на аплет можна отримати доступ до будь-яких
загальнодоступним (public) змінною і методам цього аплету.

Приклад:

Натискання на кнопку викличе установку тексту в аплеті рівним
обчисленому вираз на поле введення форми.


Впроваджені об'єкти

Впроваджені об'єкти (аудіо-і відеофайли WAV, AU, AVI …)
вставляються в документ за допомогою тега EMBED (повинен бути встановлений
відповідний plug-in). Синтаксис:

 <EMBED Src="http://www.ishodniki.ru/"URL" [WIDTH=widthValue] [HEIGHT=heightValue]> "

ТутURL – URL впроваджуваного об'єкта. Параметри
widthValue і heightValue – Розмір панелі для
розміщення об'єкта. Використовуйте розміри 140 і 60 відповідно для повного
показу панелі і 2 і 2 для приховування панелі. (Установка розмірів у 1×1 або 0x0 в
насправді не принесе бажаного результату). Використання параметра NAME
не рекомендується, тому що при цьому часто блокується робота впровадженого об'єкта
(Швидше за все, це помилка в раелизации Netscape Navigator 3.0)
autostart=booleanValue – При завантаженні об'єкта він відразу
відтворюється (дійсна тільки для об'єктів, які можна
відтворювати)
loop=booleanValue – При true
відтворення піде по циклу (до покидання документа або виклику методу
stop

Доступ до впровадженим об'єктів здійснюється за допомогою масиву
document.embeds[index], Де в якості index слід
вказати індекс об'єкту (0 відповідає першому запровадженого об'єкту, 1 –
друга, … , Document.embeds, length – 1 – останньому).

Найчастіше впроваджений об'єкт породжується від класу
netscape.plugin.Plugin. У цьому випадку Ви можете використовувати
загальнодоступні змінні і методи даного класу для управління об'єктом. Крім
цього, кожен тип впровадженого об'єкта може мати свої власні змінні і
методи. Наступний код дозволяє дізнатися, які з них доступні в конкретному
разі:

var myEmbed = document.embeds[myIndex];
var s = myEmbed + "
";
for (var i in myEmbed)
s += i + " = " + myEmbed[i] + "
";
alert(s);

Спільними для всіх впроваджених об'єктів є наступні методи:

Решта, не вказані тут, методи використовуються в основному
розробниками нових впроваджуваних об'єктів (plug-ins). Ви не повинні їх
викликати.
Крім цього, найбільш часто в об'єктах присутні три методи,
які забезпечують основні функції управління:
play()
відтворює кліп (якщо він таким є) (при завданні в якості параметра
функції true відтворення відбувається в режимі
LOOP)
stop() – Зупиняє відтворення,
"Перемотуючи" кліп в початок
pause() – Призупиняє
відтворення. Після цього при виклику play() відтворення
продовжиться з того місця, де було призупинено


Доступ з Java-аплетів до методів і властивостей JavaScript

Для того, щоб дозволити Java-апплетам доступ до методів і
властивостями JavaScript, необхідно в тегу APPLET вказати атрибут MAYSCRIPT, інакше
буде кидатися виняток. Для доступу до JavaScript необхідно імпортувати
пакет Netscape javascript:

import netscape.javascript.*;

При цьому в змінну оточення CLASSPATH необхідно додати
шлях до файлу з пакетами, що поставляються з Netscape Navigator. Напр., Якщо
Netscape Navigator встановлений в каталог c:Program FilesNavigator,
в CLASSPATH необхідно додати (для Netscape Navigator Gold) c:Program
FilesNavigatorProgramJavaCLASSESjava_301

Пакет javascript визначає клас JSObject для
опису об'єктів JavaScript і виключення JSException, кидати при помилку під
час звернення до об'єктів JavaScript.

Перед тим, як Ви зможете отримати доступ до JavaScript, Вам
необхідно отримати посилання на вікно (об'єкт window), що містить аплет:

JSObject win = JSObject.getWindow(this)

Найкраще включити цей оператор у функцію init () аплету.

Отримати доступ до об'єктів і властивостям JavaScript можна одним
з наступних способів:

Викликати методи об'єктів JavaScript можна одним з наступних
способів:


Перетворення типів від Java до JavaScript:



Перетворення типів від JavaScript до Java:



JSObject – Об'єкт JavaScript

Будь-який об'єкт JavaScript в Java-апплетах представляється нащадком
класу JSObject (Докладніше див Доступ з
Java-аплетів до методів і властивостей JavaScript)

Методи класу JSObject:


JavaScript: обмін інформацією із зовнішнім світом

Як відомо, Java-аплети можуть обмінюватися інформацією з тим
сервером, звідки він завантажений, а якщо створити відповідне серверне
додаток, то через нього і з будь-яким сервером. (Дуже хороший приклад такого
додатки – IDS Server компанії IDS Software, взаємодіє з аплетами з
допомогою пакетів ids.sql і з серверами або локальними базами даних через
систему псевдонімів). Для того, щоб код JavaScript міг скористатися такими
можливостями, достатньо в аплеті опреденіть public-функцію, що здійснює
необхідний спосіб обміну інформацією. Після цього JavaScript викликає дану
функцію аплету, коли потрібно.


JavaScript: робота з графікою

За допомогою Java можна малювати як на поверхні візуальних
компонентів, так і на поверхні зображень (клас Image). Малювання
відбувається за допомогою об'єкта Graphics, Що є однією з властивостей
класу Image. З JavaScript можна безпосередньо викликати функції об'єкта
Graphics, Попередньо створивши в аплеті public-змінну:

Graphics myGraph = myImage.getGraphics();

Таким же чином здійснюється малювання на поверхні
компонентів аплету.


JavaScript: гнучкий інтерфейс

Зазвичай для підтримки взаємодії з користувачами буває
досить використовувати форми. Однак часто бувають ситуації, коли можливостей,
надаються формами, недостатньо. До того ж у випадках, коли під
взаємодії беруть участь кілька HTML-документів (при великому числі вводяться
параметрів та необхідності динамічно змінювати послідовність дій),
користувачам доводиться багато часу чекати завантаження тих чи інших документів
або блоків інформації. Все це вирішується досить тривіально з використанням
аплетів: хоча аплети завантажуються довше звичайних компонентів документа, це
відбувається один раз за сесію роботи з оглядачем, а потім працюють достатньо
швидко. При цьому можна створити один документ і вся взаємодія зосередити
в ньому.

Наприклад, якщо кількість параметрів, що вводяться велике, можна
встановити для аплету (або який-небудь його панелі) менеджер компонування
CardLayout і розміщувати інтерфейсні елементи на його сторінках (що
є аналогом діалогових вікон у вигляді блокнота з закладками в Windows).

Якщо ж необхідно динамічно змінювати послідовність
дій та / або інтерфейсні елементи, то робиться це ще простіше. У аплетах для
зміни набору виведених елементів призначені такі функції класу
Container, Як void remove(Component comp) (Для видалення з
контейнера елемента comp), void removeAll() (Для видалення з
контейнера всіх елементів) і Component add(Component comp [, int index])
(Для додавання нового елементу). І пов'язана з цим послідовність дій
легко змінюється.


Java: динамічна генерація документів

Часто Бава необхідно з Java-аплетів впливати на зовнішній вигляд
документа в залежності від деяких умов (такі умови можуть виникнути в
той час, коли документ уже завантажений). Наприклад, потрібно створити яку-небудь
таблицю у відповідь на введені користувачем дані. Якщо контакт аплет завантажений
з СУБД-сервера, останній може (але не завжди) надати деякі функції
для динамічної генерації документів. На жаль, набір таких функцій дуже
обмежений і незадовільний. В інших випадках справи йдуть ще складніше. Таким
чином, ми можемо в аплеті скористатися можливостями JavaScript в області
створення документів. Для цього є функція document.write(…). Грамотно
використовуючи дану функцію можна побудувати документ (майже) будь-якої складності на
льоту.


Java: підтримка E-Mail

З JavaScript є можливості відправити повідомлення по E-Mail.
Є для цього три способи:



  1. Відкривається стандартне вікно введення і відправки повідомлення при натисканні на
    посиланням. Рішення для Java-аплетів (якщо в документі є посилання на зразок
    <A HREF="mailto:rbravant@yahoo.com" NAME=myMail> Send me </ A>
    ):
    JSObject win = JSObject.getWindow(this);
    JSObject doc = (JSObject)win.getMember("document");
    JSObject myMail = (JSObject)doc.getMember("myMail");
    myMail.call("click", null)
    Якщо в тексті посилання нічого не вказати, то її не буде видно на екрані, але
    вона буде функціонувати.
  2. Викликається функція click() кнопки submit форми, в якій у
    як action встановлений E-Mail адреса (наприклад, все той же
    mailto:rbravant@yahoo.com). Рішення для Java-аплетів:
    JSObject win = JSObject.getWindow(this);
    JSObject doc = (JSObject)win.getMember("document");
    JSObject myForm = (JSObject) doc.getMember ("formName");
    myForm.call("submit", null);

  3. Відкривається стандартне вікно введення і відправки повідомлення при присвоєнні
    location.href значення E-Mail адреси. Рішення для Java-аплетів:
    JSObject win = JSObject.getWindow(this);
    JSObject location = (JSObject) win.getMember ("location");
    location.setMember ("href", "mailto: rbravant@yahoo.com");

Java: проблема символів російського алфавіту

Насправді існують особливі механізми, які дозволяють
працювати з кирилицею незважаючи на те, що в Java така підтримка відсутня.
Вони досить нетривіальні, і їх розгляд виходить за рамки обговорюваної
теми. Є легкий шлях із застосуванням JavaScipt виведення кирилиці в аплеті.
(Текст, введений в аплет, може також успішно бути відправлений на сервер, хоча
ніякої гарантії в цьому немає.) Рішення таке: у документі в секції SCRIPT
визначається ряд змінних з текстом російською мовою (не забудьте захистити
символи я і ч зворотним слешем). Одержати до них доступ з аплету
не складе труднощів.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*