Вход

Использование пакета Web - Oracle -Web (WOW)

Реферат* по программированию
Дата добавления: 23 января 2002
Язык реферата: Русский
Word, rtf, 556 кб
Реферат можно скачать бесплатно
Скачать
Данная работа не подходит - план Б:
Создаете заказ
Выбираете исполнителя
Готовый результат
Исполнители предлагают свои условия
Автор работает
Заказать
Не подходит данная работа?
Вы можете заказать написание любой учебной работы на любую тему.
Заказать новую работу
* Данная работа не является научным трудом, не является выпускной квалификационной работой и представляет собой результат обработки, структурирования и форматирования собранной информации, предназначенной для использования в качестве источника материала при самостоятельной подготовки учебных работ.
Очень похожие работы





Использование пакета Web - Oracle -Web (WOW)

7.1 Введение

7.2 Назначение и схема работы

7.3 Состав

7.4 Установка

7.5 Использование

7.6 Спецификация процедур пакета htp

7.1 Введение

В данной главе отчета описывается свободно - распространяемое программное обеспечение - пакет WOW. Для освоения этого материала необходимо знание языка SQL и его процедурного расширения PL/SQL от фирмы Oracle. Кроме этого необходимо знание основ администрирования сервера Oracle. Информацию по PL/SQL Вы можете получить из документации по серверу Oracle, книга "PL/SQL Users Guide and Reference". Информацию об основах администрирования сервера Oracle можно получить из этой же документации, книга "Oracle7 Server Administration Guide".

Пакет WOW предназначен для использования под ОС Unix.

7.2 Назначение и схема работы

Пакет WOW предназначен для обработки запросов от WWW - сервера (Web -) к SQL - серверу Oracle (-Oracle-) с генерацией динамических HTML - документов (-Web). Разработчик приложений, использующий WOW оперирует только с родным языком Oracle - PL/SQL, являющимся процедурным расширением языка SQL. Это обуславливает высокую эффективность разработки приложений. Обработка созданных приложений непосредственно в сервере Oracle определяет высокую скорость исполнения приложений.

Основная идея пакета WOW - преобразование запроса к WWW - серверу в вызов определенной процедуры PL/SQL. В качестве параметров процедуры, используются данные из запроса к WWW - серверу. Кроме этого, язык PL/SQL дополняется функциями вывода различных данных в формате HTML. Сфера технологических решений пакета приведена на рис. 7-1.

7.3 Состав

Структурно, WOW состоит из ряда исполняемых программ, соответствующих спецификации CGI и набора пакетов PL/SQL (см. рис. 7-2).

Пакет htp содержит процедуры и функции, облегчающие формирование HTML - документа. Пакет htf содержит описание различных констант и функций, используемых при формировании HTML - документов.

7.4 Установка

Для корректной работы пакета необходимо правильно провести процедуру установки. Пакет WOW требует около 2Mb дискового пространства. На базовом сервере должны быть установлены:

  1. операционная система семейства Unix;

  2. WWW - сервер;

  3. сервер баз данных Oracle или сетевой стек Oracle SQL*Net с возможностью доступа к удаленному серверу баз данных Oracle.

Этап I

В случае, когда пакет поставляется в виде исходных текстов, необходимо произвести компиляцию и сборку исполняемого модуля wowstub. При сборке wowstub необходимо использовать библиотеки установленного сервера Oracle или сетевого стека SQL*Net. Компиляция и сборка производится утилитой make на основании данных файла Makefile. Вам необходимо изменить ряд параметров Makefile для настройки на Вашу конфигурацию Oracle и Unix:

  • ORACLE_HOME - должен совпадать с каталогом, определенным переменной ORACLE_HOME сервера Oracle.

  • DEST_DIR - должен указывать на каталог, хранящий CGI модули Вашего WWW сервера.

  • DOC_ROOT - должен указывать на каталог в котором будет размещена документация по WOW. Каталог должен быть доступен для WWW сервера.

Этап II

Независимо от сборки wowstub, необходимо создать ряд структур данных в БД Oracle.

  1. Создать пользователя, через которого WOW будет осуществлять доступ к данным и исполнение рабочих процедур. Обычно используется имя WWW.

  2. Создать из под вышеупомянутого пользователя все необходимые структуры данных и примеры. Для этого необходимо исполнить следующие SQL файлы, идущие в дистрибутиве WOW: wow.sql, ht.sql, math.sql, emp.sql, showemp.sql, hanoi.sql. Исполнить эти файлы можно с использованием одной из следующих утилит: SQL*Plus, SQL*DBA, Server Manager, Enterprize Manager.

Этап III

Необходимо поместить модуль wowstub в каталог CGI программ Вашего WWW сервера. Необходимо переопределить ряд параметров файла wow, представляющего собой скрипт sh:

  1. ORACLE_HOME - в соответствии с параметром ORACLE_HOME Вашего сервера Oracle или стека SQL*Net;

  2. TWO_TASK - в соответствии с параметром TWO_TASK клиентской части Вашего сервера Oracle;

  3. WOW_UID - в соответствии с именем пользователя и его паролем, созданными на этапе II установки.

В случае если Вы используете версию от ЦНИТ НГУ, необходимо отредактировать все 4 файла: wow.win, wow.iso, wow.alt, wow.koi8.

Отредактированный файл wow (все 4 отредактированных файлы при использовании версии от ЦНИТ НГУ) необходимо поместить в каталог для CGI - программ Вашего WWW сервера.

7.5 Использование

Рассмотрим простейший пример с использованием пакета WOW. При обращении к WWW - серверу www.cnit.nsu.ru по URL:

http://www.cnit.nsu.ru/cgi-bin/wow.win/example.test?answer=no

происходит следующая цепочка действий (см. рис. 7-3):

  1. WWW - сервер интерпретирует это обращение как запуск CGI - программы wow.win.

  2. Программа wow.win интерпретирует параметры как вызов процедуры test пакета example с параметром answer имеющим значение no, созданной в схеме WWW сервера Oracle.

  3. Сервер Oracle исполняет эту процедуру и все процедуры и функции, вызываемые из нее. Выходные данные, представляющие динамически созданный HTML - документ, передаются программе wow.win.

  4. Программа wow.win перекодирует выходной документ в кодировку Microsoft CodePage 1251, используемую в Windows - приложениях, и передает его WWW - серверу.

  5. WWW - сервер возвращает созданный документ, как результат запроса, WWW - клиенту.

URL, обращающийся к процедуре PL/SQL должен быть построен по определенным правилам и содержать ряд элементов:

  1. Указатель на модуль пакета WOW, находящийся в каталоге CGI - программ. Расширение программы wow - .koi8, .win, .iso, .alt определяет кодировку WWW - клиента:

    • КОИ-8

    • Microsoft Code Page 1251

    • ISO 8859-5

    • Microsoft Code Page 866

Например:
http://www.cnit.nsu.ru/cgi-bin/wow.win

  1. Имя процедуры PL/SQL, к которой происходит обращение. Модули пакета используют схему и регистрационные данные пользователя www БД Oracle. Таким образом, вызываемая PL/SQL - процедура должна быть доступна пользователю www на исполнение. Если процедура (test) создана прямо в схеме www, необходимо просто указать ее имя:

http://www.cnit.nsu.ru/cgi-bin/wow.win/test

Если процедура входит в состав пакета (example), созданного в схеме www, необходимо добавить имя пакета и имя процедуры:

http://www.cnit.nsu.ru/cgi-bin/wow.win/example.test

Когда пакет создан в другой схеме Oracle, необходимо указывать и имя схемы. Например, для схемы fancy получим:

http://www.cnit.nsu.ru/cgi-bin/wow.win/fancy.example.test

Пользователь www должен иметь права на исполнение этой процедуры, явно предоставленные оператором GRANT языка SQL.

  1. После имени процедуры, через разделитель '?', начинают перечисляться параметры процедуры и их значения в виде пар:

<название_параметра> = <значение_параметра>

между собой, различные параметры разделяются амперсандом '&':

<название_параметра1>=<значение_параметра1>&<название_параметра2>= <значение_параметра2>

Название параметра должно совпадать с названием параметра вызываемой процедуры. Число параметров должно в точности соответствовать числу параметров процедуры. Если хотя бы одно из этих требований не соблюдено, Вы получите сообщение об ошибке. Порядок указания параметров значения не имеет. Большие и маленькие буквы в названии параметров равнозначны.

Число реально передаваемых параметров может и не совпадать с числом параметров, указанных в спецификации процедуры. В этом случае, все опускаемые параметры должны иметь значения по умолчанию.

Пример:
http://www.cnit.nsu.ru/cgi-bin/wow.win/example.test?answer=no

Исходя из описанного механизма работы пакета WOW можно сформулировать основные требования к PL/SQL - процедурам, обрабатывающим запросы от WWW - сервера.

  1. Все входные переменные, передающиеся через WOW в процедуру всегда имеют тип varchar2. Если Вы хотите использовать какой - либо другой тип данных, необходимо использовать функции преобразования из varchar2.

  2. В пакете htp отсутствуют функции вывода начала и конца HTML - документа. Поскольку многие современные броузеры интерпретируют текст без обрамляющих тегов ... как преформатированный, необходимо прямо задавать эти теги в начале и конце документа.

Пример пакета example:
Create or Replace package example is
procedure test(answer in Varchar2);
end;
/
Create or Replace package body example is
procedure test(answer in Varchar2) is
ответ varchar2(3);
cursor c_man(ans in varchar2) is select Фамилия from Результаты_опроса where Ответ=ans order by Фамилия;
begin
-- Начало документа
htp.p('');
-- Вывод названия страницы и заголовка
if answer = 'no'
then
ответ:='НЕТ';
htp.htitle('Фамилии людей, ответивших отрицательно');
else
ответ:='ДА';
htp.htitle('Фамилии людей, ответивших положительно');
end if;
htp.olistopen;
-- Начало нумерованного списка
for man in c_man(Ответ) loop
-- Элемент списка
htp.item(man.Фамилия);
end loop;
-- Конец нумерованного списка
htp.olistclose;
-- Конец документа
htp.p('');
end;
end;
/

При этом подразумевается что в схеме WWW Oracle находится таблица примерно следующей структуры:

Create table Результаты_опроса(Фамилия varchar2(30),
Имя varchar2(14),
Отчество varchar2(20),
Ответ varchar2(3));

Обращаться к пакету WOW можно и из форм HTML. Ниже приведен пример обращения к тому же пакету example из простейшей формы.




Тестовая форма



Введите ответ:



7.6 Спецификация процедур пакета htp

procedure title(ctitle in varchar2)

- выводит название документа (теги ) </p> </td> </tr> <tr> <td> <p> procedure htitle(ctitle in varchar2)</p> </td> <td> <p> - выводит название документа и повторяет его в заголовке первого уровня (теги <TITLE>>, <H1>) </p> </td> </tr> <tr> <td> <p> procedure header(nsize in integer, cheader in varchar2)</p> </td> <td> <p> - выводит заголовок уровня <i>nsize</i> (теги <H1> ... <H6>) </p> </td> </tr> <tr> <td> <p> procedure url(curl in varchar2, cname in varchar2)</p> </td> <td> <p> - формирует <i>cname</i> как гипертекстную связь, указывающую на <i>curl</i> (теги <A HREF>). </p> </td> </tr> <tr> <td> <p> procedure gif(curl in varchar2)</p> </td> <td> <p> - включает в документ картинку, путь до которой <i>curl</i> (теги <IMG>). </p> </td> </tr> <tr> <td> <p> procedure gif(curl in varchar2, calign in varchar2) </p> </td> <td> <p> - включает в документ картинку, путь до которой <i>curl</i> с выравниванием, определяемым параметром <i>calign</i> (теги <IMG>). </p> </td> </tr> <tr> <td> <p> procedure bold(ctext in varchar2)</p> </td> <td> <p> - выводит текст <i>ctext</i> жирным шрифтом (теги <B>). </p> </td> </tr> <tr> <td> <p> procedure italic(ctext in varchar2)</p> </td> <td> <p> - выводит текст <i>ctext</i> шрифтом italic (теги <I>) </p> </td> </tr> <tr> <td> <p> procedure item(cval in varchar2)</p> </td> <td> <p> - выводит <i>cval</i> как элемент списка (теги <ITEM>). </p> </td> </tr> <tr> <td> <p> procedure formOpen(curl in varchar2)</p> </td> <td> <p> - создает форму с действием <i>curl</i> (теги <FORM>). </p> </td> </tr> <tr> <td> <p> procedure formHidden(cname in varchar2, cvalue in varchar2)</p> </td> <td> <p> - создает скрытое поле формы для хранения значения <i>cvalue</i> переменной с именем <i>cname</i>. </p> </td> </tr> <tr> <td> <p> procedure formPassword(cname in varchar2),<br>procedure formPassword(cname in varchar2, cvalue in varchar2)</p> </td> <td> <p> - создает поле формы для ввода значения переменной - пароля с именем <i>cname</i> и значением по умолчанию <i>cvalue</i>. </p> </td> </tr> <tr> <td> <p> procedure formField(cname in varchar2, nsize in integer),<br>procedure formField(cname in varchar2),<br>procedure formField(cname in varchar2, cvalue in varchar2)</p> </td> <td> <p> - создает поле формы для ввода значения переменной с именем <i>cname</i> длиной <i>nsize</i> со значением по умолчанию <i>cvalue</i>. </p> </td> </tr> <tr> <td> <p> procedure formText(cname in varchar2, nrow in integer, ncol in integer)</p> </td> <td> <p> - создает многострочное поле формы (длиной <i>ncol</i>, высотой <i>nrow</i>) для ввода значения переменной с именем <i>cname</i>. </p> </td> </tr> <tr> <td> <p> procedure formCheckbox(cname in varchar2)</p> </td> <td> <p> - создает элемент checkbox для ввода значения логической переменной <i>cname</i>. </p> </td> </tr> <tr> <td> <p> procedure formRadio(cname in varchar2, cval in varchar2)</p> </td> <td> <p> - создает элемент radiobutton для ввода одного из значений <i>cval</i> переменной <i>cname</i>. </p> </td> </tr> <tr> <td> <p> procedure formSelectOpen(cname in varchar2)</p> </td> <td> <p> - создает список значений для переменной с именем <i>cname</i>. </p> </td> </tr> <tr> <td> <p> procedure formSelectOption(cval in varchar2)</p> </td> <td> <p> - добавляет значение cval в список значений переменной, описанной в <i>formSelectOpen</i>. </p> </td> </tr> <tr> <td> <p> procedure formSelectClose</p> </td> <td> <p> - заканчивает список значений, открытый <i>formSelectOpen</i>. </p> </td> </tr> <tr> <td> <p> procedure formDo(cname in varchar2)</p> </td> <td> <p> - создает кнопку типа SUBMIT текущей формы с именем <i>cname</i>. </p> </td> </tr> <tr> <td> <p> procedure formDo</p> </td> <td> <p> - создает кнопку типа SUBMIT текущей формы с именем 'Submit'. </p> </td> </tr> <tr> <td> <p> procedure formUndo(cname in varchar2)</p> </td> <td> <p> - создает кнопку типа RESET текущей формы с именем <i>cname</i>. </p> </td> </tr> <tr> <td> <p> procedure formUndo</p> </td> <td> <p> - создает кнопку типа RESET текущей формы с именем 'Reset'. </p> </td> </tr> <tr> <td> <p> procedure formClose</p> </td> <td> <p> - закрывает текущую форму. </p> </td> </tr> <tr> <td> <p> Процедуры вывода: </p> </td> </tr> <tr> <td> <p> procedure print (cbuf in varchar2),<br>procedure print (dbuf in date),<br>procedure print (nbuf in number)</p> </td> <td> <p> - выводят значение различных типов. </p> </td> </tr> <tr> <td> <p> Синонимы для процедуры <i>print - p</i>: </p> </td> </tr> <tr> <td> <p> procedure p (cbuf in varchar2),<br>procedure p (dbuf in date),<br>procedure p (nbuf in number). </p> </td> <td> <p>  </p> </td> </tr> <tr> <td> <p> Процедуры, выводящие постоянные значения: </p> </td> </tr> <tr> <td> <p> procedure line</p> </td> <td> <p> - разделительная линия (тег <HR>). </p> </td> </tr> <tr> <td> <p> procedure para</p> </td> <td> <p> - начало параграфа (тег <P>). </p> </td> </tr> <tr> <td> <p> procedure nl</p> </td> <td> <p> - перевод строки (тег <BR>). </p> </td> </tr> <tr> <td> <p> procedure item</p> </td> <td> <p> - элемент списка (тег <LI>). </p> </td> </tr> <tr> <td> <p> procedure ulistOpen</p> </td> <td> <p> - начало ненумерованного списка (тег <UL>). </p> </td> </tr> <tr> <td> <p> procedure ulistClose</p> </td> <td> <p> - окончание ненумерованного списка (тег </UL>). </p> </td> </tr> <tr> <td> <p> procedure olistOpen </p> </td> <td> <p> - начало нумерованного списка (тег <OL>). </p> </td> </tr> <tr> <td> <p> procedure olistClose</p> </td> <td> <p> - окончание нумерованного списка (тег </OL>). </p> </td> </tr> <tr> <td> <p> procedure dlistOpen</p> </td> <td> <p> - начало списка определений (тег <DL>). </p> </td> </tr> <tr> <td> <p> procedure dlistClose</p> </td> <td> <p> - окончание списка определений (тег </DL>). </p> </td> </tr> <tr> <td> <p> procedure dterm</p> </td> <td> <p> - термин списка определений (тег <DT>). </p> </td> </tr> <tr> <td> <p> procedure ddef</p> </td> <td> <p> - определение термина (тег <DD>). </p> </td> </tr> <tr> <td> <p> procedure preOpen</p> </td> <td> <p> - начало форматированного текста. </p> </td> </tr> <tr> <td> <p> procedure preClose</p> </td> <td> <p> - окончание форматированного текста. </p> </td> </tr> </table> <p> <br> </p> </div> <div class="mt50"> <!-- Yandex.RTB R-A-39084-3 --> <div id="yandex_rtb_R-A-39084-3"></div> <!--suppress JSAnnotator --> <script>window.yaContextCb.push(()=>{ Ya.Context.AdvManager.render({ renderTo: 'yandex_rtb_R-A-39084-3', blockId: 'R-A-39084-3' }) })</script> </div> <script> $(function (){ ajax_ls(); function ajax_ls () { $.ajax({ type: 'get', url: '/searchrb.html', data: { 'q': 'Использование пакета Web - Oracle -Web (WOW)', 'ignore_market_id': 32042 } }); setTimeout(function() { var page = 1; $.ajax({ type: 'post', url: '/searchrb/ls.html', data: { 'tbl': 'market', 'page': page, 'category_id': -1, 'num_docs_page': 3, 'from': 'similarfree' }, beforeSend: function() { $('div.srch__ls-ext').addClass('h-opacity5'); $('#srch__ls-preloader_ls').show(); }, success: function(r){ var res = $.parseJSON(r); setTimeout(function() { $('div.srch__ls-preloader').hide(); $('div.srch__ls-ext').removeClass('h-opacity5'); }, 300); if (res.is_not_result == 1) { $('#similarExtC').hide(); } else { $('#srch__ls').html(res.divls); } } }); }, 1000); } }); </script></div> <div class="pagebodyLeft4C"></div> </div> <div class="pagebodyRightC"> <div class="pagebodyRight1C"><div class="rRight1ExtC"> <iframe src="https://assist.assistmw.ru/Forms/NbsForm.aspx?from=referatbank1" width="320px" height="890px" scrolling="no" frameborder="0"></iframe> <div class="mt50 h-center"> <div id="adfox_167653417078968983"></div> <!--suppress JSAnnotator --> <script> window.yaContextCb.push(()=>{ Ya.adfoxCode.createAdaptive({ ownerId: 332443, containerId: 'adfox_167653417078968983', params: { p1: 'cxirc', p2: 'gxna' } }, ['desktop'], { tabletWidth: 830, phoneWidth: 480, isAutoReloads: false }) }) </script> <script> setInterval(function(){ window.Ya.adfoxCode.reload('adfox_167653417078968983', {onlyIfWasVisible: true}) }, 30000); </script> </div> <div class="mt50 h-center"> <!-- Yandex.RTB R-A-39084-1 --> <div id="yandex_rtb_R-A-39084-1"></div> <!--suppress JSAnnotator --> <script>window.yaContextCb.push(()=>{ Ya.Context.AdvManager.render({ renderTo: 'yandex_rtb_R-A-39084-1', blockId: 'R-A-39084-1' }) })</script> </div> </div></div> <div class="pagebodyRight2C"></div> </div></div> </div> </div> <div class="footerExt"> <div class="containerPage"> <div class="footerColsC footerLogoC"> <div class="footerLogo"></div> </div> <div class="footerColsC footerCol1C"> <div class="footerTitle">ПОМОЩЬ И КОНСУЛЬТАЦИИ</div> <div class="mt10"><a href="/zakaz/form.html" class="footer">Узнать стоимость</a></div> <div class="mt10"><a href="/zakaz/form/referat.html" class="footer">Заказать реферат</a></div> <div class="mt10"><a href="/zakaz/form/kursovaya.html" class="footer">Курсовая работа на заказ</a></div> <div class="mt10"><a href="/zakaz/form/diplom.html" class="footer">Дипломная работа на заказ</a></div> <div class="mt10"><a href="/zakaz/form/kontrolnaya.html" class="footer">Заказать контрольную</a></div> <div class="mt30"><a href="https://referatbank.ru/jump/to/9.html" class="footer">帮助中国学生解决<br>作业问题</a></div> <div class="footerTitle2">ГОТОВЫЕ РАБОТЫ</div> <div class="mt10"><a href="/referat/ls.html" class="footer">Банк бесплатных работ</a></div> <div class="mt10"><a href="/market/referat/ls.html" class="footer">Магазин готовых работ</a></div> </div> <div class="footerColsC footerCol2C"> <div class="footerTitle">ПОЛЬЗОВАТЕЛЯМ</div> <div class="mt10"><a href="/feedback.html" class="footer">Обратная связь</a></div> <div class="mt10"><a href="/articles.html" class="footer">Правила оформления работ</a></div> <div class="mt10"><a href="/help/info/pay.html" class="footer">Способы оплаты</a></div> <div class="mt10"><a href="/help/info/license.html" class="footer">Пользовательское соглашение</a></div> <div class="mt30"><a href="https://referatbank.ru/jump/to/10.html" class="footer" target="_blank">Успешно заработать</a></div> </div> <div class="footerColsC footerCol3C"> <!--LiveInternet logo--><a href="https://www.liveinternet.ru/click" target="_blank"><img src="//counter.yadro.ru/logo?57.2" title="LiveInternet" alt="" border="0" width="88" height="31"/></a><!--/LiveInternet--> </div> <div class="footerCopyright small">© Рефератбанк, 2002 - 2024</div> </div> </div> <script src="/js/arcticmodal-0.3.min.js" type="text/JavaScript"></script> <script src="/js/js-cookie-2.1.4.js" type="text/JavaScript"></script> <script> $(function (){ $(document).click(function(e) { //console.log(e.target); if ($(e.target).closest('div.headerMenuIcon').length) return; if ($(e.target).closest('div.menuDropDownItem').length) return; if ($(e.target).closest('#headerMenuDropDownC').length) return; if ($(e.target).closest('#headerAvatarC').length) return; if ($(e.target).closest('#headerNotificationIcon').length) return; $('#headerMenuDropDownC').hide(); $('#mDDAccountC').hide(); $('#headerNotificationC').hide(); e.stopPropagation(); }); $('#headerMenuIconC').on('click', function(e) { if ($(e.target).closest('#headerMenuDropDownC').length) return; if ($(e.target).closest('div.menuDropDownItem').length) return; $('#mDDAccountC').hide(); $('#headerNotificationC').hide(); $('#headerMenuDropDownC').toggle(); }); $('#headerAvatarC').on('click', function(e) { if ($(e.target).closest('#mDDAccountC').length) return; if ($(e.target).closest('div.menuDropDownItem').length) return; $('#headerMenuDropDownC').hide(); $('#headerNotificationC').hide(); $('#mDDAccountC').toggle(); }); $('#headerNotificationIcon').on('click', function(e) { if ($(e.target).closest('#headerNotificationC').length) return; $('#headerMenuDropDownC').hide(); $('#mDDAccountC').hide(); $('#headerNotificationC').toggle(); }); $('#smClose').on('click', function() { $('#systemMessageErrorC').hide(); $('#systemMessageMsgC').hide(); }); $('div.auth_show').on('click', function() { $('#headerMenuDropDownC').hide(); $.arcticmodal({ type: 'ajax', url: '/login/form.html', ajax: { type: 'post', data: {'hashkey':'276a0306b94cd1fefcd976618f4b1455', 'uri':'referat/preview/32042/referat-ispolzovanie-paketa-oracle'} }, overlay: { css: { backgroundColor: '#555', opacity:0.4}}, openEffect: {speed:10}, closeEffect: {speed:10} }); }); }); </script> </body> </html>