Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Использование window.open() для позиционирования окна в середине экрана (https://javascript.ru/forum/events/1376-ispolzovanie-window-open-dlya-pozicionirovaniya-okna-v-seredine-ehkrana.html)

marat-chessman 04.07.2008 03:24

Использование window.open() для позиционирования окна в середине экрана
 
Приветствую знатоков Javascript.

Я, честно говоря, уже слегка припух от этой задачки, и не могу найти в инете прямого ответа....

Моя задача - вывести окно (800X600 пикселей) в середине экрана. Если я задаю реальные числовые значения для параметров top и left, то окно открывается без проблем со смещением в 300 пикселей по горизонтали и вертикали от верхнего левого угла экрана:

myWin = window.open("bla.htm", "displayWindow", 
"width=800,height=600,left=300,top=300,status=no,toolbar=no,menubar=no");


Но моя задача - вывести окно (800X600 пикселей) в середине экрана, то есть по идее это должно быть так:

function openWindow() {
  var leftvar = (screen.width-800)/2;
  var topvar = (screen.height-600)/2;
  myWin = window.open("bla.htm", "displayWindow",    "width=800,height=600,left=leftvar,top=topvar,status=no,toolbar=no,menubar=no");
}


Увы........ Окно выводится, но не посередине экрана, а в левом верхнем углу. Прошу подсказать, в чем моя ошибка?

С уважением,
Марат

Gvozd 05.07.2008 20:56

в первую очередь замечание: используйте ББ-код для оформления своих листингов.
а вот, собственно и решение
function openWindow() {
var leftvar = (screen.width-800)/2;
var topvar = (screen.height-600)/2;
myWin = window.open("bla.htm", "displayWindow", "width=800,height=600,left="+leftvar+",top="+topvar+",status=no,toolbar=no,menubar=no");
}

marat-chessman 06.07.2008 00:30

Спасибо за ответ
 
Еще раз всех приветствую!

Спасибо большое за ответ. Я только что попробовал внедрить листинг, который мне предложил уважаемый Gvozd. Но, увы, он не действует так, как мне хотелось бы. Я уже самостоятельно разобрался с данной проблемкой. Для этого, оказывается, надо было ввести в строке поисковика GOOGLE строчку типа такой:

Цитата:

javascript window.open() how to open window in the center of screen

Я нашел маленький и очаровательный скрипт на эту тему. Вот он, красавчик (испробовал - действует безотказно):

function openWin() {
  var features, w = 800, h = 600;
  var top = (screen.height - h)/2, left = (screen.width - w)/2;
  if(top < 0) top = 0;
  if(left < 0) left = 0;
  features = 'top=' + top + ',left=' +left;
  features += ',height=' + h + ',width=' + w + ',resizable=no';
  myWin = open('bla.htm', 'displayWindow', features);
}


Да простят меня уважаемые модераторы форума, но грех не привести конкретный пример работы этого скрипта, который я внедрил на сайте, созданном мной:

http://www.roslestnica.ru/foto.php

Еще раз спасибо за ответ, уважаемый Gvozd.

С наилучшими пожеланиями,
marat-chessman

Gvozd 06.07.2008 14:18

единственная прична почему мой скпипт не работает, судя по всему пробел, случайно закравшийся в строку с параметрами.
а иак он принципиально ничем не отличается от вашего, кроме списка параметров еще

Bad Request 10.07.2008 13:58

Как раз хотел задать тот же самый вопрос!
По-моему, скрипт Гвоздя гораздо лаконичнее и это его красит. Только вот в Опере почему-то окно централизуется плохо - отображается ближе к нижней части окна.

Ragnarok 12.10.2009 20:08

Да и в Firefox'e тоже.

tsugi@ukr.net 16.10.2009 01:30

top=".$_COOKIE['m_top'].",left=".$_COOKIE['m_left']."

при этом заранее при загрузке с помощью

var m_left;
m_left = (screen.availWidth/2)-(450/2);
$.cookie('m_left', m_left);
var m_top;
m_top = (screen.availHeight/2)-(480/2);
$.cookie('m_top', m_top);

извращенно, зато работает 100%

x-yuri 17.10.2009 04:26

нету надежного способа отцентрировать окно (http://habrahabr.ru/blogs/javascript/20916/). left, top - для верхнего левого угла окна, а width, height - для содержимого

B~Vladi 21.10.2009 11:11

Цитата:

История лестниц
:lol:

x-yuri 21.10.2009 11:23

O_o топиком ошибся?


Часовой пояс GMT +3, время: 03:36.