Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Javascript-магистрам (https://javascript.ru/forum/events/39108-javascript-magistram.html)

VladShestakov999 16.06.2013 15:55

Javascript-магистрам
 
О великие Javascript-магистры )) Нормально ли я реализовал галерею изображений + тултип на уровне знаний до статьи "Делигирование событий", что в теме "События, взаимодействие с посетителем"( http://learn.javascript.ru/event-delegation ) ?)) http://learn.javascript.ru/play/hfR3Cb

melky 16.06.2013 16:07

лично я, вроде, косяков серьёзных не нашёл, только идентификация косячная - лучше помечать картинки своим тегом (добавить случайный класс), чтобы не цеплять чужие.

но тут этого не нужно было делать :)

ну и по мелочи, вроде такого :

span.onclick=function(e){
  ...
  var largeImg=document.getElementById('largeImg');
  ...
}

largeimg лучше закешировать и не искать одно и то же при каждом клике

VladShestakov999 16.06.2013 16:11

Логично)) Спасибо за помощь:)

cyber 16.06.2013 16:12

VladShestakov999,
в старых ИЕ это работать не будет
var target = e.target || event.srcElement;

так как на e.target выдаст ошибку и проверка не будет выполнена, а так работать будет
var target = event.srcElement ||  e.target ;

так же нельзя делать так (точнее делать можно но работать не будет, не помню точно где, вроде в том же старом ие или лисе, вроде в лисе)
e = e || window.event;

но можно так
function(evt){
 var e = evt || window.event;

VladShestakov999 16.06.2013 16:29

Цитирую учебник:
Цитата:

В IE<9 он доступен как event.srcElement, остальные браузеры используют event.target. Кроссбраузерное решение выглядит так:

var target = event.target || event.srcElement;
Про второе незнаю, но если это так - буду знать. Но вроде второе это именованные аргументы и ничего того про FF там нету. ( http://learn.javascript.ru/arguments-named )

cyber 16.06.2013 16:38

VladShestakov999,
я читал эту книгу, и в свое время я наступил на эти грабли, не верите, пробуйте сами
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    
    <div id='test'>
      <span>click span(does not work in old IE)</span>
    </div>
    
    <div id='test1'>
      <span>click span( work in old IE)</span>
    </div>
    
    <script>

      document.getElementById('test').onclick = function (e)
      {
        var target = e.target || event.srcElement;
        
        alert('work')
      
      }
      
      
       document.getElementById('test1').onclick = function (e)
      {
        var target = event.srcElement || e.target;// меняем местами
        
        alert('work')
      
      }
      


    </script>

  </body>
</html>

cyber 16.06.2013 16:41

VladShestakov999, второе так же можете проверить(в последней версии лисы , бага нет но в старых есть)...

zebra 16.06.2013 16:45

cyber,
Для начала нужно получить window.event для ie. А потом уж проверять на target/srcElement

cyber 16.06.2013 16:46

zebra,
в ие event это свойство window.

VladShestakov999 16.06.2013 16:48

Ну и правильно)) С чего бы ему работать? В учебнике четко написано:
Цитата:

IE8- вместо передачи параметра обработчику создаёт глобальный объект window.event. Обработчик может обратиться к нему.
Поэтому если вы переопределите объект событий следующим образом, то все будет работать:
e=e || window.event;
        var target = e.target || e.srcElement;

Попробуйте, через IE tester, например: http://learn.javascript.ru/play/Ah6tz А по поводу FF не знаю, возможно вы и правы. Стоит проверить


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