Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Открытие окна


Автор: Anton Vatchenko 8.9.2004, 16:33
Какие параметры надо указывать в window.open, чтобы появилось просто белое окно без рамки, без меню и т. д. Просто белый прямоугольник.

И еще вопрос для профессионалов: у меня при нажатии на ссылку должно всплывать с помощью яваскрипта окно, но toolbar от Google определяет его как всплывающую рекламку и игнорирует. Как это обойти?

Автор: GoodBoy 8.9.2004, 16:44
http://forum.vingrad.ru/index.php?showtopic=26043

Автор: Се ля ви 8.9.2004, 16:48
Почитай тут - http://nbsp.ru/articles/20/ - тема такая, что в SP2 к виндоусу XP обещалась защита от всплывающих окон, так что их рекомендовалось вызывать методом createPopup(). Реализовать в итоге не реализовали, но гугл мог взять на заметку и реализовать...

А про чистый белый квадрат не знаю, попробуй задать fullscreen=1 и при этом задать размеры width и height - вдруг сработает? Ну а панели отключать параметрами соответствующими...

Автор: GoodBoy 8.9.2004, 16:56
Цитата
А про чистый белый квадрат не знаю, попробуй задать fullscreen=1 и при этом задать размеры width и height - вдруг сработает?

Не-е-е-е!!!!!!!!!!!!!!!! :-))))))))))))))))))))))))))

Автор: Се ля ви 8.9.2004, 18:16
Цитата
Цитата (Се ля ви @ 8.9.2004, 17:48)
А про чистый белый квадрат не знаю, попробуй задать fullscreen=1 и при этом задать размеры width и height - вдруг сработает?


Не-е-е-е!!!!!!!!!!!!!!!! :-))))))))))))))))))))))))))


Попытка - не пытка wink.gif)) Я вобщем так просто написал... думал - а вдруг и правда сработает?

Автор: GoodBoy 8.9.2004, 18:24
Се ля ви

Ну а вот "просто так" писать - не надо!!!! Люди помощи ждут!!!! wink.gif

Автор: Cache'Var 9.9.2004, 08:57
Канэшна чэреэ попу....

После открытия окна выполни:
resizeTo() - изменит размер
moveTo() - перетянет куда надо

В открываемом окне опиши стиль body
body.style.overflow = "hidden" - спрячешь скролл.


Код

<html>
<head>
<title></title>
<script>
function openWin() {
var oWin = window.open("about:blank", null, "fullscreen=yes");
oWin.resizeTo(500, 200);
}
</script>
</head>
<body>
<input type=button onclick="openWin();" value="openWin()">
</body>
</html>


Автор: Gold Dragon 9.9.2004, 10:07
open()

open(URL, windowName[, windowFeatures])

Открывает новое окно (без закрытия первоначального). Вы можете определить URL, который загрузится в это окно или оставить тот параметр пустым, чтобы позволить инструкции сценария document.write() писать в то новое окно. Параметр windowName позволяет Вам назначить имя, которое может использоваться атрибутами TARGET. Это имя не должно использоваться в ссылках сценария так же, как и имена фреймов. Вместо этого ссылка сценария на подокно должна быть ссылкой к объекту window, возвращенному методом window.open() . Поэтому, если ваши сценарии должны связаться с окном, открытый этим способом, лучшее сохранить возвращенное значение как глобальную переменную так, чтобы будущие инструкции могли это использовать .

Потенциальная проблема с подокнами состоит в том, что они могут быть спрятаны под основным окном, если пользователь щёлкает на основном окне (или сценарий даёт ему фокус). Любой сценарий, который открывает подокно, должен также включить для подокна метод focus() (в Navigator >= 3, и в IE >= 4 ). Последующие генерации метода window.open(), чей параметр windowName тот же самый, как и более ранний запрос, автоматически адресуют содержание в предварительно открытое окно, даже если оно ниже основного окна.

Дополнительный третий параметр дает Вам контроль над различными физическими атрибутами подокна. параметр windowFeatures - отдельная строка, состоящая из списка с разделителями-запятыми (без пробелов) между пунктами)пар attribute/value:

newWindow = window.open("someDoc.html","subWind", "statusbar,menubar,HEIGHT=400,WIDTH=300) newWindow.focus( )

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

function supesSmallWindow() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
var newWindow = window.open("","","HEIGHT=20,WIDTH=20,AlwaysRaised");
netscape.security.PrivilegeManager.disablePrivilege("UniversalBrowserWrite");
}



Возвращаемое значение
Ссылка на объект Window.

Параметры
URL Полный или относительный URL как строка. Если пустая строка, никакого документа в окно не загружается
windowName Идентификатор для окна, которое нужно использовать. Оно отличается от атрибута TITLE документа, который загружается в окно.
windowFeatures Строка особенностей нового окна с разделителями-запятыми. Не помещайте пробелов после разделителей-запятых.

Список возможных особенностей длинен, но множество их определено Navigator 4 как требующими подписанных сценариев, потому что они - потенциально секретны и причиняют беспокойство ничего не подозревающим пользователям. Особенности перечислены далее. Просто включите ее название без учета регистра в разделенном запятыми списке. Только атрибуты, определяющие измерения требуют, чтобы были назначены значения.

alwaysLowered Всегда позади всех окон браузера. Требует подписанных сценариев.
alwaysRaised Всегда перед всеми окнами браузера. Требует подписанных сценариев.
channelMode Режим с переключателем каналов (по умолчанию - no)
copyhistory Сохраняет список хронологии старого окна.
dependent Подокно закрывается, если окно, которое открыло его, также закрывается.
directories Отображает директивные кнопки.
height Высота окна в пикселах.
hotkeys Отключает горячую клавишу меню (кроме Quit из и Security Info).
innerHeight Высота области содержания. Подписанный сценарий требуется для очень маленьких размеров.
innerWidth Ширина области содержания. Подписанный сценарий требуется для очень маленьких размеров.
left Смещение левого края окна от левого края экрана.
location Отображение строки ввода URL.
menubar Показывать строку меню (строка меню всегда видима на Mac).
outerHeight Полная высота окна. Подписанный сценарий требуется для очень маленьких размеров.
outerWidth Полная ширина окна. Подписанный сценарий требуется для очень маленьких размеров.
resizable Позволить изменять размеры окна (всегда позволяемо на Mac).
screenX Смещение левого края окна от левого края экрана. Подписанный сценарий требуется, чтобы переместить окно за экран.
screenY Смещение верхнего края окна от верхнего края экрана. Подписанный сценарий требуется, чтобы переместить окно за экран.
scrollbars Показывать полосы прокрутки, если документ слишком большой.
status Показывать строку состояния
titlebar Отображать titlebar. Требуется подписанный сценарий.
title Заголовок
toolbar Показывать панель инструментов (с Back, Forward и другими кнопками).
top Смещение верхнего края окна от верхнего края экрана.
width Ширина окна в пикселах.
z-lock Новое окно установлено ниже окон браузера. Требуется подписанный сценарий.


Автор: Cache'Var 9.9.2004, 10:44
Из MSDN.

titlebar = { yes | no | 1 | 0 }

Specifies whether to display a title bar for the window. This parameter is ignored unless the calling application is an HTML Application or a trusted dialog box. The default is yes.

а в случае с ИЕ как "подписать сценарий" и получить a trusted dialog box qstn.gif

Автор: Aliance 9.9.2004, 15:52
Cache'Var
Зачем такое извращение?
Red Dragon всё ясно и правильно описал...

Автор: Cache'Var 9.9.2004, 16:08
Он ясно написал что:
titlebar Отображать titlebar. Требуется подписанный сценарий.
и превел пример "подписи" в НН.

Далее читай мой предыдущий пост.

И старайся читать внимательней вбудущем. wink.gif

Автор: Се ля ви 9.9.2004, 17:19
2 Red Dragon : respect! Очень полезная справка!

Ко всему сказанному, чтобы получилось полное руководство по методу window.open, добавлю 2 наблюдения и с ними практических рекомендации, как добиваться нужного эффекта:

1) Если вы открыли окно из какой-то страницы, вы можете сохранить ссылку на это окно, пока не перейдёте в ней по ссылке на другую страницу. После этого если вам нужно обратиться к открытому окну - нужно заново вызвать метод window.open, указав то же самое имя окна (оно, кстати, аналогично атрибуту target в ссылках). После этого с сылкой на окно можно работать снова. Но! При этом новом вызове старого окна, его параметры изменить не удастся. Например, если вы открываете первый раз окно с параметром width=100, а с другой страницы - width=150, то если пользователь не закрыл окно, то его размеры не изменятся (!). По-этому для постоянных окон на сайте лучше после их открытия вызывать метод resizeTo, а параметры width и height использовать только для окон, с которыми не нужно держать связи. Однако помните, что метод resizeTo отличается от параметра width, указываемого при открытии окна, тем, что первый задаёт внешний, а второй - внутренний размер окна, разница между которыми - учёт размеров бордера и титлбара окна (т.е. при вызове window.open параметрами width и height вы задаёте размер внутренней области станицы, а при вызове метода resizeTo - внешний размер окна). Проблема здесь заключается в том, что и ширина бордера и, главное, высота титлбара в винде - это область персональных настроек пользователя, и хотя народ редко меняет толщину бордера, высота титлбара в стоящей по-умолчанию теме winXP на 9px больше, чем в классической и стоящей 2000`й винде - при нюансировке вёрстки в коммерческих сайтах этот момент может стать камнем преткновения с дизайнером...

2) Многие когда пишут автоматом генерируемую страницу в новое окно матодами windowName.document.write() и windowName.document.writeln(), забывают закрывать поток вывода методом window.document.close();, когда выведено всё. Правильнее это делать, потому что старые браузеры показывали, что документ не полностью загружен, к тому же так никогда не будет вызвано событие window.onload() (или <body onload="func();">) для этого окна. А если содержание окна переписывается, нужно перед выводом в него нового контента вызвать метод windowName.document.clear();, иначе новое содержимое может появиться просто внизу от существующего.

Вот теперь, IMHO, можно переработать и в FAQ это дело положить wink.gif

Автор: Gold Dragon 10.9.2004, 08:05
А вообще мне в последнее время кажется, что использовать window.open - это плохой тон. То есть менять пользовательские настройки браузера.

Автор: GoodBoy 10.9.2004, 10:09
Red Dragon
Ну ты загнул... А если мне нужно в новом окошке показать увеличенную картинку, и я не хочу чтобы там были все кнопки, строки адреса и т.д. Или после запроса к серваку в новом маленьком окошке возвращался ответ "спасибо, (Ваша запись добавлена | Ваше письмо отправлено | что-то еще)"??? Зачел мне для этого новое стандартное окно??? Да и не красиво это!!! А так открым окошко без ничего, только с заголовком, размера 200х100 и написал в нем это...

window.open - это очень полезная вещь!!!!!!!!!!!

Автор: Gold Dragon 10.9.2004, 10:54
GoodBoy
Извини, не так выразился smile.gif Я имел ввиду что браузеры открывают окно на весь экран, а не тот который задан (например, MyIE2)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)