Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Совершествуем стиль написания скриптов (https://javascript.ru/forum/events/1307-sovershestvuem-stil-napisaniya-skriptov.html)

Mitrandir 14.06.2008 12:13

Совершествуем стиль написания скриптов
 
Доброго времени суток, всем участникам форума!

Я новичок в JavaScript. Недавно, во время работы над фотоальбомом для своей веб-странички возникла задача следующего содержания:
"При щелчке на миниатюре фотки нужно, чтобы она открывалась в натуральную величину в новом окне браузера".
Для этого была написан скриптик:

var newwnd;
function opener(src,wd,ht)
{ newwnd = window.open(src,wd,ht);
  }


А потом для каждой фотки был задан обработчик события onclick:
onClick="opener(document.images[индекс_элемента].src,
document.images[индекс_элемента].naturalWidth,
document.images[индекс_элемента].naturalHeight)"


В данном случае мне кажется, что хоть этот способ и рабочий, но с точки
зрения стиля написания скриптов (да и решения данной задачи в принципе) он шибко "корявый". В этой связи прошу помочь мне, как говориться "довести до ума" решение данной задачи :o
Заранее всем спасибо !

Андрей Параничев 14.06.2008 16:58

naturalWidth и naturalHeight отсутствуют в IE (5, 5.5, 6). И, насколько я знаю, эквивалентов в нем нету.

Mitrandir 14.06.2008 18:18

Андрей Параничев
Спасибо за замечание. На Осле v6 работу скрипта не проверял, хотя следует сказать, что IE 7 свойства naturalWidth и naturalHeight не
воспринимает.При создании нового окна браузера, как мне показалось,
он руководствуется какими - то своими параметрами.
ALL
Вопрос остаётся открытым: можно ли сократить объём работы,выполняемой вручную, (заполнение каждого обработчика события для тега img) за счет применения JavaScript ?

Gvozd 14.06.2008 21:02

var newwnd;
function opener(img_node)
{
newwnd = window.open(img_node.src,img_node.naturalWidth,img_node.naturalHeight);
}

onClick="opener(this)"

вопрос с naturalWidth и naturalHeight, оставляю открытым, ибо впадлу)

Mitrandir 15.06.2008 19:52

Возвращаясь к проблеме о задании/ изменении размеров фото или окна:
допустим у меня есть изображение с разрешением 1600*1200 пикс.( разрешение экрана 1280*800) - при загрузке в новое окошко браузер
масштабирует фотку не так, как хотелось бы.
Возможные (в теории) пути решения данной проблемы:

1) "Поиграться" со значением аргумента resizeable в window.open() ;
На практике, однако все популярные браузеры (FireFox, Opera, IE)
этот параметр игнорируют.
2) Попытаться использовать следующий код

var newwnd;
function opener(img_node)
{ const k = 0.7;
   var wd = screen.width*k;
   var  ht =  screen.height *k;

newwnd = window.open(img_node.src,wd,ht);
}

Данный код работает только в браузерах на движке Gecko.
IE будь он неладен:mad: в таком сценарии выдаёт ошибку -
обработчик не "пашет".
Итак,господа, я в тупике:confused:
Какие могут быть пути решения данного вопроса с точки зрения практикующего JavaScript - кодера

Gvozd 15.06.2008 21:37

var newwnd;
function opener(img_node)
	{
	var k = 0.7;//на const IE спотыкается.видимо в JScript'e(в отличие от JavaScript'a) нет такой конструкции. да и не к чему она тут.
	var wd = screen.width*k;
	var  ht =  screen.height*k;
	newwnd = window.open(img_node.src,"new_window","width="+wd+",height="+ht+",resizable=1");
	//resizable отлично работает. просто вы неправильно применяли функцию window.open
	//вот как надо
	//http://vvz.nw.ru/Lessons/JavaScript/Objects/window/window_open.htm
	}

Mitrandir 16.06.2008 09:02

Да, вы правы аргументы то должны быть строковыми, а я чё то протупил
нехило...:o


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