1. Что такое Modaldialog?
Showmodaldialog - это метод объекта jswindow.
Разница в том, что после открытия Showmodaldialog, родительское окно не может получить фокус (то есть оно не может работать).
Вы можете установить значение window.returnValue в подволке, чтобы родительское окно могло получить это возврат.
2. Один пример
1) main.html в главном окне,
2) Откройте суб -Window sub.html в главном окне через Showmodaldialog
3) Установите returnValue в подволке и вернитесь в главное окно, чтобы использовать
Main.html
Код кода копирования следующим образом:
<html>
<Голова>
<Medaname = "Generator" Content = "oscar999">
</Head>
<Скрипт>
Functionshowmodal ()
{{
varret = window.showmodaldialog ("sub.html? temp ="+math.random ());
Alert ("subreturnvalueis"+ret);
}
</script>
<тело>
<InputId = button1type = buttonValue = "openSub" name = button1onClick = "showmodal ();" >>
</Body>
</Html>
sub.html
Код кода копирования следующим образом:
<html>
<Голова>
<Medaname = "Generator" Content = "oscar999">
</Head>
<Скрипт>
FunctionReturnMain ()
{{
window.returnValue = "returnFromSub";
window.close ();
}
</script>
<тело>
<InputId = button1type = buttonValue = "returnAndClose" name = button1onClick = "returnMain ()">
</Body>
</Html>
Специальное объяснение: когда метод Showmodaldialog в main.html цель использования Math.random () состоит в том, чтобы избежать кеша.
3.showmodaldialog в деталях
vreturnvalue = window.showmodaldialog (surl [, varguments] [, sfeatures])))
Обрушительный
Необходимо -Choose Параметры, тип: строка. URL используется для указания документа, который будет отображаться в диалоговом окне.
варгументы
Необязательные параметры, тип: вариант. Используется для передачи параметров в диалоговое окно. Тип параметра, переданный не ограничен, включая массив и т. Д. Диалоговое окно получает параметры, проходящие через Window.dialogarguments.
Sfeatures
Необязательные параметры, тип: строка. Используется для описания внешнего вида и другой информации диалогового окна, вы можете использовать один или несколько ниже и использовать сегмент ";"
Диалог диалога Dialogheight, не менее 100px, диалог и диалог в IE4, а IE5 - это PX.
Dialogwidth: диалоговое окно ширину.
Dialogleft: Расстояние от левой части рабочего стола.
Dialogtop: расстояние от рабочего стола.
Центр: {Да |.
Справка: {Да |.
Пометят: {да |. По умолчанию нет.
Статус: {да |. По умолчанию - да [модительно] или нет [модально].
Прокрутите: {Да |. По умолчанию да.
Есть несколько атрибутов, используемых в HTA, которые обычно не используются на общих веб -страницах.
Dialoghide: {Да |. По умолчанию нет.
Edge: {Затонувший |. По умолчанию повышение.
Нездоровый: {да |.
4. Совместимость браузера
Но не все браузеры совместимы с этим использованием.
Если вы запускаете приведенный выше пример в Chrome, родительское окно может получить фокус по желанию.
Ниже приводится поддержка основных браузеров по этому методу.
Браузер | Поддержать ли | состояние |
IE9 | ○ | |
Firefox13.0 | ○ | |
Safari5.1 | ○ | |
Chrome19.0 | × | Это не модальное диалоговое окно, но у Open есть новое окно |
Opera12.0 | × | Все случилось, даже не окно |
Если есть параметр, который введен в варгументах в окно:
Код кода копирования следующим образом:
var return = window.showmodaldialog ("sub.html? temp ="+math.random (), window);
В подволке следующее значение:
Браузер | Модальный диалог | Window.opner | Window.dialogarguments | ReturnValue |
IE9 | ○ | неопределенный | [Окно объекта] | ○ |
Firefox13.0 | ○ | [ObjectWindow] | [ObjectWindow] | ○ |
Safari5.1 | ○ | [ObjectWindow] | [ObjectWindow] | ○ |
Chrome19.0 | × | [ObjectWindow] | неопределенный | × |
Обратите внимание, что в браузере Firefox, если подвижность обновлена, Window.dialogarguments все еще будет потеряно и станет неопределенным. В приведенных выше результатах мы видим, что возвращаемое значение возврата значения заключается в том, что только хромированный браузер возвращается неопределенным, и нет проблем с другими браузерами.
5. Как решить совместимость хрома.
Направление: set window.opner.returnvalue = "" ""
Main.html
Код кода копирования следующим образом:
<html>
<Голова>
<Meta name = "general" content = "oscar999">
</Head>
<Скрипт>
Функция ShowModal ()
{{
var return = window.showmodaldialog ("sub.html? temp ="+math.random (), window);
// для хрома
if (ret == не определено)
{{
Ret = window.returnValue;
}
Alert («Суб -возвратное значение -+ret);
}
</script>
<тело>
<Input id = button1 type = button value = "open sub" name = button1 onclick = "showmodal ();" >>
</Body>
</Html>
sub.html
Код кода копирования следующим образом:
<html>
<Голова>
<Meta name = "general" content = "oscar999">
</Head>
<Скрипт>
Функция returnmain ()
{{
if (window.opner! = не определен)
{{
Window.opner.returnvalue = "return from sub";
} Еще {
window.returnValue = "return от sub";
}
window.close ();
}
</script>
<тело>
<Input id = button1 type = button value = "return and Close" name = button1 onclick = "returnmain ()">
</Body>
</Html>
Это должно определить, определены ли определенные объекты, чтобы отличить браузеры. Конечно, вы также можете судить тип типа браузера
Это используется для использования returnvalue родительского окна.
Var oldvalue = window.turnvalue;
var newvalue = showmodaldialog ()
Window.returnvalue = oldvalue
6. Следует отметить, что тест под Chrome должен поместить файл HTML в веб -сервер (Tomcat, ...), чтобы получить доступ к тесту в соответствии с URL -адресом HTTP. В противном случае это не удастся.