Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.06.2008, 12:13
Аспирант
Отправить личное сообщение для Mitrandir Посмотреть профиль Найти все сообщения от Mitrandir
 
Регистрация: 03.06.2008
Сообщений: 37

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

Я новичок в 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
Заранее всем спасибо !
Ответить с цитированием
  #2 (permalink)  
Старый 14.06.2008, 16:58
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

naturalWidth и naturalHeight отсутствуют в IE (5, 5.5, 6). И, насколько я знаю, эквивалентов в нем нету.
Ответить с цитированием
  #3 (permalink)  
Старый 14.06.2008, 18:18
Аспирант
Отправить личное сообщение для Mitrandir Посмотреть профиль Найти все сообщения от Mitrandir
 
Регистрация: 03.06.2008
Сообщений: 37

Андрей Параничев
Спасибо за замечание. На Осле v6 работу скрипта не проверял, хотя следует сказать, что IE 7 свойства naturalWidth и naturalHeight не
воспринимает.При создании нового окна браузера, как мне показалось,
он руководствуется какими - то своими параметрами.
ALL
Вопрос остаётся открытым: можно ли сократить объём работы,выполняемой вручную, (заполнение каждого обработчика события для тега img) за счет применения JavaScript ?
Ответить с цитированием
  #4 (permalink)  
Старый 14.06.2008, 21:02
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

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

onClick="opener(this)"

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

Последний раз редактировалось Gvozd, 14.06.2008 в 21:09.
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2008, 19:52
Аспирант
Отправить личное сообщение для Mitrandir Посмотреть профиль Найти все сообщения от Mitrandir
 
Регистрация: 03.06.2008
Сообщений: 37

Возвращаясь к проблеме о задании/ изменении размеров фото или окна:
допустим у меня есть изображение с разрешением 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 - кодера
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2008, 21:37
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

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
	}
Ответить с цитированием
  #7 (permalink)  
Старый 16.06.2008, 09:02
Аспирант
Отправить личное сообщение для Mitrandir Посмотреть профиль Найти все сообщения от Mitrandir
 
Регистрация: 03.06.2008
Сообщений: 37

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск