Совершествуем стиль написания скриптов
Доброго времени суток, всем участникам форума!
Я новичок в 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 Заранее всем спасибо ! |
naturalWidth и naturalHeight отсутствуют в IE (5, 5.5, 6). И, насколько я знаю, эквивалентов в нем нету.
|
Андрей Параничев
Спасибо за замечание. На Осле v6 работу скрипта не проверял, хотя следует сказать, что IE 7 свойства naturalWidth и naturalHeight не воспринимает.При создании нового окна браузера, как мне показалось, он руководствуется какими - то своими параметрами. ALL Вопрос остаётся открытым: можно ли сократить объём работы,выполняемой вручную, (заполнение каждого обработчика события для тега img) за счет применения JavaScript ? |
var newwnd; function opener(img_node) { newwnd = window.open(img_node.src,img_node.naturalWidth,img_node.naturalHeight); } onClick="opener(this)" вопрос с naturalWidth и naturalHeight, оставляю открытым, ибо впадлу) |
Возвращаясь к проблеме о задании/ изменении размеров фото или окна:
допустим у меня есть изображение с разрешением 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 - кодера |
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 } |
Да, вы правы аргументы то должны быть строковыми, а я чё то протупил
нехило...:o |
Часовой пояс GMT +3, время: 11:30. |