Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.04.2009, 00:00
Не_Робот
 
Сообщений: n/a

Открытие нового окна под размер изображения
Есть код для просмотра изображения в новом окне

<a href="img1.jpg" class="popup"><img src="prev/img1.jpg"></a>

document.onclick = function(e) {
  e = e || event;
  var t = e.target || e.srcElement;
  while (t && t.nodeType == 1 && t.tagName.toLowerCase() != 'a')
     t = t.parentNode;

  if (t && t.nodeType == 1 && /\bpopup\b/.test(t.className)) {
    window.open(t.href,'…','…');
    return false;
  }
  return true;
}


Как сделать чтобы окно открывалось не на весь экран, а размером с открываемое изображение и на черном фоне?
Ответить с цитированием
  #2 (permalink)  
Старый 27.04.2009, 01:24
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

неужели это так трудно?
Ответить с цитированием
  #3 (permalink)  
Старый 28.04.2009, 11:47
Не_Робот
 
Сообщений: n/a

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

Ну или на крайний случай, чтобы открываемый popup был html страницей в котором содержалось изображение по центру а сама страница была залита черным цветом.
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2009, 11:51
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Не_Робот
Я имел ввиду, чтобы окно было не всегда одного и того же размера, а под размер открываемого изображения.
перевод вероятно такой:
как изменить размер уже открытого окна?

Последний раз редактировалось Riim, 28.04.2009 в 11:58.
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2009, 12:59
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

не думаю
http://www.quirksmode.org/js/popup.html
Ответить с цитированием
  #6 (permalink)  
Старый 28.04.2009, 16:24
Не_Робот
 
Сообщений: n/a

Нашел! Но мне нужна помощь, чтобы объедините его с предыдущим, чтобы он срабатывал, только когда <a> присваивается класс popup.


<A HREF="javascript:CaricaFoto('lg-1.gif')><IMG SRC="1.gif"></A>

<!-- Begin
function CaricaFoto(img){
  foto1= new Image();
  foto1.src=(img);
  Controlla(img);
}
function Controlla(img){
  if((foto1.width!=0)&&(foto1.height!=0)){
    viewFoto(img);
  }
  else{
    funzione="Controlla('"+img+"')";
    intervallo=setTimeout(funzione,20);
  }
}
function viewFoto(img){
  largh=foto1.width+20;
  altez=foto1.height+20;
  stringa="width="+largh+",height="+altez;
  finestra=window.open(img,"",stringa);
}
//  End -->
Ответить с цитированием
  #7 (permalink)  
Старый 28.04.2009, 18:02
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

foto1.onload = function() {
    viewFoto(...);
}
foto1.src=(img);

if( this.className == 'popup' ) ...

http://javascript.ru/unsorted/why_href_js_is_bad
Ответить с цитированием
  #8 (permalink)  
Старый 28.04.2009, 22:47
Не_Робот
 
Сообщений: n/a

Блина запутался, сначала, с html и css хорошо разбираюсь но javascript вообще никак.

1 вариант

Этот скрипт при щелчке на превью открывает изображение в popup окне, если в теге <a> параметру class присвоено значение popup

<a href="img1.jpg" class="popup"><img src="prev/img1.jpg"></a>


document.onclick = function(e) {
  e = e || event;
  var t = e.target || e.srcElement;
  while (t && t.nodeType == 1 && t.tagName.toLowerCase() != 'a')
     t = t.parentNode;
 
  if (t && t.nodeType == 1 && /\bpopup\b/.test(t.className)) {
    window.open(t.href,'…','…');
    return false;
  }
  return true;
}


[hr]

2 вариант

А этот дает возможность открывать popup окно того же разрешения, что и открываемое изображение (ну если все изображения разного разрешения)

<A HREF="javascript:CaricaFoto('lg-1.gif')"><IMG SRC="1.gif"></A>


function CaricaFoto(img){
  foto1= new Image();
  foto1.src=(img);
  Controlla(img);
}
function Controlla(img){
  if((foto1.width!=0)&&(foto1.height!=0)){
    viewFoto(img);
  }
  else{
    funzione="Controlla('"+img+"')";
    intervallo=setTimeout(funzione,20);
  }
}
function viewFoto(img){
  largh=foto1.width+20;
  altez=foto1.height+20;
  stringa="width="+largh+",height="+altez;
  finestra=window.open(img,"",stringa);
}


я бы конечно использовал второй вариант, но там javascript прям в href, по моему не откроется если у кого не будет включен javascript и прописывать каждое изображение нужно ('lg-1.gif'), первый вариант с присваивание просто класса намного проще, но он открывает окно на весь экран, что смотрится очень убого, как эти два скрипта правильно объединить или что дописать в первый вариант?
Ответить с цитированием
  #9 (permalink)  
Старый 29.04.2009, 18:09
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
по моему не откроется если у кого не будет включен javascript
а что, первый вариант без использования javascript? Просто для пользователей, у которых отключен javascript, в href можно что-то полезное подставить
Цитата:
прописывать каждое изображение нужно ('lg-1.gif')
в любом случае, лучше чтобы было два варианта файла (с разными разрешениями). Другое дело, что увеличенный вариант может отличаться от уменьшенного какой-нибудь приставкой 'lg-' и тогда его имя не нужно прописывать - можно его образовать из уменьшенного.

потом, как перенести javascript из href в onclick видно из статьи
как лучше определить размер незагруженного еще изображения я тебе написал
чтобы решить свою проблему, ты должен разобраться, как работают эти два варианта. А потому задавай конкретные вопросы
Ответить с цитированием
  #10 (permalink)  
Старый 30.04.2009, 01:00
Не_Робот
 
Сообщений: n/a

Спасибо всем кто пытался помочь, в другом месте в момент подсказали
хотя я думал будет наоборот, все таки форум спец по JavaScript.

" складываешь их вместе
window.open(t.href,'',''); меняешь на CaricaFoto(t.href); "
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать размер изображения x-yuri Общие вопросы Javascript 4 24.01.2009 22:29
открытие нового окна javascript subaru Элементы интерфейса 2 14.05.2008 20:22
Открытие окна в зависимости от выбора в <option> partyzan Общие вопросы Javascript 0 10.04.2008 01:00