Доступ з JavaScript до змінних, методів, класів і пакетів Java, Статті, JavaScript / VBScript, статті

Для доступу до класів і пакетів 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 визначає клас Доступ з
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>

*

*