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


Автор: PARROT 9.6.2005, 10:35
Как правильно, задать размеры окна, если размер окна заранее неизвестен?
Скрипт открывающий само окно:
Код

function openwin(url,a,w,h)
{
if(a==1)
{
win=open(url,"win","width="+w+",height="+h+",top=10,left=10,toolbar=no,menubar=0,status=0,location=0");
}

Скрипт генерирующий окно:
Код

<body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0">
<table width="100%" height="100%" cellpadding="0" cellspacing="0">
<tr>
<td><img src='/<?=$path?>'></td>
</tr>

Собственно сама ссылка открывающая окно
Код

$img='<td onClick=openwin("im.php?path='.$mas[11].'",1,400,313)  style=cursor:hand><img src='.$mas[10].' border=1 alt=увеличить фото></td>';

Все работает, только размер открывающегося окна несоответствует размеру фотографии. smile
Добавлено @ 10:39
Если написать вот так:
Код

$img='<td onClick=openwin("im.php?path='.$mas[11].'",1,"+w+","+h+")  style=cursor:hand><img src='.$mas[10].' border=1 alt=увеличить фотографию></td>';

То фотография открывается почти правильно... Не правильно то, что появляются лишние поля, пустота в продолжении фотографии... smile
Хочется чтобы дальше фотки, никаких полей не образовывалось!
Можно сделать??? smile

Автор: Opik 9.6.2005, 11:13
PARROT
получай размер фотки, через PHP, например:
getimagesize и с этими параметрами создавай окно.

Автор: PARROT 9.6.2005, 11:44
Opik, можно пример? smile
Вот так:
Код

$size = getimagesize ($mas[11]);
echo "<img src=$mas[11] {$size[3]} border>";

А как открыть окно? Средствами рнр его не откроешь smile

Автор: Opik 9.6.2005, 12:24
PARROT
средствами ПХП получаешь размер окна, а открываешь его на JS

Автор: PARROT 9.6.2005, 16:30
Печатает правильно, но окно не открывает, если открывает, то с тем же белым фоном справа. smile
Код

$size = getimagesize ($mas[11]);//получаем массив, в 3 индексе у нас содержится размер фотки

$img="<td onClick=openWin('im.php?path={$mas[11]}', {$size[3]}) style=cursor:hand><img src={$mas[10]} border=1 alt=увеличить фото></td>"; 

Автор: Opik 9.6.2005, 17:44
PARROT
почему правильно, разве тебе нужно
width=x height=y?

Автор: Ciber SLasH 9.6.2005, 18:09
2PARROT:
Вот, посмотри оно или нет?
Модифицированный скрипт Aliance'а:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<meta HTTP-EQUIV=Content-Type CONTENT='text/html; CHARSET=windows-1251'>
<title>Открытие нового окна с картинкой</title>
<head>
<script language='JavaScript'>
function showImg(URL, imgPath) {
  var img = new Image();
  img.src = imgPath;
  var h = img.height;
  var w = img.width;
  var wnd = window.open(URL, 'newWin', 'width='+w+',height='+h);
  wnd.document.write('<img style="position: absolute; left: 0px; top: 0px" src="'+img.src+'">');
}
</script>
</head>

<body>
<button onClick="showImg('', '0.gif')">Картинка №1</button>
<button onClick="showImg('1.htm', '1.gif')">Картинка №2</button>
<button onClick="showImg('2.htm', '2.gif')">Картинка №3</button>
</body>
</html>

Обсуждалось здесь: http://forum.vingrad.ru/index.php?showtopic=53672 (кстати на этой же странице)
И ещё: http://forum.vingrad.ru/index.php?showtopic=51419

Автор: PARROT 9.6.2005, 18:10
Opik, можно пример?
width=x height=y печатает то, что мы получили от getimagesize()

Автор: PARROT 9.6.2005, 20:14
Ciber SLasH, спасибо за скрипт, вроде разобралась, но помощь еще требуется.

Так, вроде работает, но через раз!
Бывает открывает с полосой белого поля, после обновления страницы баг исчезает.
Вопрос: Как убрать этот баг вообще?
Сам яваскрипт:
Код

function showImg(URL, imgPath) {
  var img = new Image();
  img.src = imgPath;
  var h = img.height;
  var w = img.width;
  var wnd = window.open(URL, 'newWin', 'width='+w+',height='+h);
  wnd.document.write('<img style="position: absolute; left: 0px; top: 0px" src="'+img.src+'">');
}

Строка которая вызывает открытие окна:
Код

        $size = getimagesize ($mas[11]);
       if ($mas[10]=="") $img="<td>нет фотографии</td>";
else $img="<td onClick=\"showImg('','{$mas[11]}')\" style=cursor:hand><img src={$mas[10]} border=1 alt=увеличить фото></td>";

Открывает окно, с тем же адресом где и ссылка.
Можно ли сделать один файл, который будет открывать все окна?
Просьба объяснить, потому как в яваскрипт я нуль!
Спасибо!

Автор: Ciber SLasH 9.6.2005, 20:31
Непонятно...
Код

$size = getimagesize ($mas[11]);    
if ($mas[10]=="")
  $img="<td>нет фотографии</td>";
else 
  $img="<td onClick=\"showImg('','{$mas[11]}')\" style=cursor:hand><img src={$mas[10]} border=1 alt=увеличить фото></td>";

Переменная $img вставляется в эту таблицу?
Код

<body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0">    
<table width="100%" height="100%" cellpadding="0" cellspacing="0">    
<tr>    
<td><img src='/<?=$path?>'></td>    
</tr>

Если да, то чёт не сходятся имена переменных $img и $path

Автор: PARROT 9.6.2005, 20:36
В этом окне раньше генерировались фото.
Цитата(Ciber @ 9.6.2005, 21:31)
Код
<body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0">    
<table width="100%" height="100%" cellpadding="0" cellspacing="0">    
<tr>    
<td><img src='/<?=$path?>'></td>    
</tr>


Я этим уже не пользуюсь.
Если можно этим воспользоваться, то как? Просто поменять имя переменной?
А где задавать адрес страницы?

Автор: Ciber SLasH 9.6.2005, 20:51
Блин... я совсем запутался пытаясь разобраться как у тебя всё это дело происходит... smile
Ты бы подробно со всеми скриптами и объяснением проблемы отписалась бы... smile

Автор: PARROT 9.6.2005, 20:54
В итоге осталось всего 2 скрипта:
Цитата(PARROT @ 9.6.2005, 21:14)
Сам яваскрипт:
Код

function showImg(URL, imgPath) {
  var img = new Image();
  img.src = imgPath;
  var h = img.height;
  var w = img.width;
  var wnd = window.open(URL, 'newWin', 'width='+w+',height='+h);
  wnd.document.write('<img style="position: absolute; left: 0px; top: 0px" src="'+img.src+'">');
}

Строка которая вызывает открытие окна:
Код

        $size = getimagesize ($mas[11]);
       if ($mas[10]=="") $img="<td>нет фотографии</td>";
else $img="<td onClick=\"showImg('','{$mas[11]}')\" style=cursor:hand><img src={$mas[10]} border=1 alt=увеличить фото></td>";

Остается решить 2 проблемы:
1) Открытие окна в определенном файле.
2) Баг при открытии фоток
smile

Автор: Ciber SLasH 9.6.2005, 21:29
А вот так попробуй:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV=Content-Type CONTENT='text/html; CHARSET=windows-1251'>
<title>Открытие нового окна с увеличением картинки</title>
<script language='JavaScript'>
function showImg(URL, imgPath) {
  var img = new Image();
  img.src = imgPath;
  var h = img.height;
  var w = img.width;
  var wnd = window.open(URL, 'newWin', 'width='+w+',height='+h);
  wnd.document.write('<img style="position: absolute; left: 0px; top: 0px" src="'+img.src+'">');
}
</script>
</head>

<body>
<?
$size = getimagesize($mas[11]);
if ($mas[10] == "")
  $img = "<td>нет фотографии</td>";
else
  $img = "<td onClick=\"showImg('',$mas[11])\" style=\"cursor: pointer\"><img src=\"$mas[10]\" border=1 alt=\"увеличить фото\"></td>";
?>
<table cellspacing=0 cellpadding=0 align=center>
<tr><? echo $img; ?>
</table>
</body>
</html>

Автор: PARROT 9.6.2005, 21:35
Ciber SLasH, у меня так и есть:
Код

 <td><a href=?page=post&id=$id>послать письмо</a></td>
        </tr>
        <tr>
        $img
        </tr>

Автор: Ciber SLasH 9.6.2005, 21:46
В твоём предыдущем посте были кой-каие траблы с кавычками в переменной $img. Вот я и привёл пример, где с кавычками всё путём.

А на счёт бага... что так и открывается окно с промежутками между картинкой?

Автор: PARROT 9.6.2005, 22:00
Ну вот так дает ошибку яваскрипт и картинка не открывается
Код

$img = "<td onClick=\"showImg('',$mas[11])\" style=\"cursor: pointer\"><img src=\"$mas[10]\" border=1 alt=\"увеличить фото\"></td>";

А так вроде ничего:
Код

$img = "<td onClick=\"showImg('','$mas[11]')\" style=\"cursor: pointer\"><img src=\"$mas[10]\" border=1 alt=\"увеличить фото\"></td>";

Трабла с открытием фоток остается, не всегда срабатывает размер. smile

Автор: Ciber SLasH 9.6.2005, 22:34
А вот так?
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<meta HTTP-EQUIV=Content-Type CONTENT='text/html; CHARSET=windows-1251'>
<title>Открытие нового окна с картинкой</title>
<head>
<script language='JavaScript'>
function showImg(URL, imgPath) {
  var img = new Image();
  img.src = imgPath;
  var h = img.height;
  var w = img.width;
  var content = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' +
                '<html><head><meta HTTP-EQUIV=Content-Type CONTENT="text/html; CHARSET=windows-1251">' +
                '<title>ImagePreview</title>' +
                '<script language="JavaScript">' +
                'function selfResizer( id ) {' +
                'var obj = document.getElementById(id);' +
                'var w = obj.width;' +
                'var h = obj.height;' +
                '  window.resizeTo(w, h);' +
                '  self.focus();' +
                '}' +
                '<\/script></head><body onLoad="selfResizer(foto)">' +
                '<img id=foto style="position: absolute; left: 0px; top: 0px" src="'+img.src+'">' +
                '</body></html>';
  var wnd = window.open(URL, 'newWin', 'width='+w+',height='+h);
  wnd.document.write(content);
}
</script>
</head>

<body>
<a href=# onClick="showImg('', 'logo.gif')">Просмотреть фотку</a>
</body>
</html>

Автор: Aliance 10.6.2005, 11:36
Кстати, такая тема уже совсем недавно поднималась. И в топике ОКНА и ФРЕЙМЫ было нечто похожее smile
Если не найдет никто - приеду с юга - дам ответ smile))

Автор: PARROT 12.6.2005, 20:34
Ciber SLasH, не работает. А для чего закоментирован кусок кода,это нужно или нет?
Добавлено @ 20:36
Спасите, в среду нужно сдавать сайт, иначе грозились уволить.
Работает все, кроме открытия фотографий. Пожалуйста. smile

Автор: Aliance 12.6.2005, 21:33
Чем не устраивает http://forum.vingrad.ru/index.php?showtopic=54997&view=findpost&p=437089 от Ciber SLasH?

Автор: PARROT 12.6.2005, 21:35
Цитата(Aliance @ 12.6.2005, 22:33)
Чем не устраивает http://forum.vingrad.ru/index.php?showtopic=54997&view=findpost&p=437089 от Ciber SLasH?

Меня код устраивает, а вот картинки... открываются через раз, раз с белым полем справа или снизу, если обновить страницу, то могут открыться как положено...
Может это какой-то глюк?

Автор: Aliance 12.6.2005, 21:39
Попробуй так:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<meta HTTP-EQUIV=Content-Type CONTENT='text/html; CHARSET=windows-1251'>
<title>Открытие нового окна с картинкой</title>
<head>
<script language='JavaScript'>
function showImg(URL, imgPath, counter) {
  var img = new Object();
  var img['~'+counter] = new Image();
  img['~'+counter].src = imgPath;
  var h = img['~'+counter].height;
  var w = img['~'+counter].width;
  var wnd = window.open(URL, 'newWin', 'width='+w+',height='+h);
  wnd.document.write('<img style="position: absolute; left: 0px; top: 0px" src="'+img.src+'">');
}
</script>
</head>

<body>
<button onClick="showImg('', '0.gif', '0')">Картинка №1</button>
<button onClick="showImg('1.htm', '1.gif', '1')">Картинка №2</button>
<button onClick="showImg('2.htm', '2.gif', '2')">Картинка №3</button>
</body>
</html>


Кстати, размеры картинок статичны? Известны зарание?
Добавлено @ 21:39
Кстати, и там, и там можно попробовать убрать Доктайп - из-за него иногда "непонятные" глюки исчезают 8)))

Автор: PARROT 12.6.2005, 22:03
Размеры картинок заранее неизвестны. Доктайпа нет.
Код

        $size = getimagesize ($mas[11]);
       if ($mas[10]=="") $img="<td>Нет фото</td>";
else $img = "<td onClick=\"showImg('','$mas[11]')\" style=\"cursor: pointer\"><img src=\"$mas[10]\" border=1 alt=\"увеличить фото\"></td>";

Твой код дает мне ошибку. smile

Автор: Ciber SLasH 12.6.2005, 22:13
Цитата(PARROT @ 12.6.2005, 21:34)
А для чего закоментирован кусок кода,это нужно или нет?

Где? там нет никаких комментариев, там одна большая строка.
Проверял лично и первый код, который я давал (и Aliance тебе ещё о нём напомнил) работает и последний с большой строкой -- тоже работает.
Видно что-то ты неправильно где-то делаешь. smile

Автор: PARROT 12.6.2005, 22:30
Цитата(Ciber @ 12.6.2005, 23:13)
Цитата(PARROT @ 12.6.2005, 21:34)
А для чего закоментирован кусок кода,это нужно или нет?

Где? там нет никаких комментариев, там одна большая строка.
Проверял лично и первый код, который я давал (и Aliance тебе ещё о нём напомнил) работает и последний с большой строкой -- тоже работает.
Видно что-то ты неправильно где-то делаешь. smile

Ciber SLasH, действительно, код работает, точнее оба твоих работают.
Но картинки по прежнему открываются через раз.
Может это глюк эксплоера? Или...
Я оставлю так. Всем спасибо! Может главный программер на работе чего подскажет...
Спасибо! smile

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