• Рассказы
  • Стихи
  • Люди
  • Заметки
  • Афоризмы
  • Эмоции в картинках

  • Обзоры приложений WP7
  • Галерея картинок


  • © 2008-2010
    All rights reserved
    Автор: Александр (aka Se#)

    Заметки - Программирование - JS #1
    Фанкрафт предлагает раскрасить истории: Фанкрафт История
    1. Столкнулся с проблемой при динамическом формировании объектов, средствами DOM.
    Суть проблемы: разные браузеры по разному устанавливают обработчики событий.
    Поискав и проверив, пришёл к следующему заключению:
    Для динамического формирования событий, следует использовать нижеприведённые методы:
    (в качестве примера взято событие по клику мышки [onclick])
    	Internet Explorer: attachEvent("on"+type,function_name)
    FireFox : addEventListener('click',function_name,false);
    Opera : object.onclick = "function_name([par1,...])".
    Таким образом, чтобы получить кроссбраузерное формирование событий для динамически-создаваемых объектов, можно использовать примерно следующую схему:
    // Обрабатываем чекбокс
    function oneFunction(someObject)
    {
    	if(someObject.attachEvent)
    		someObject.attachEvent('onclick',myFunc);
    	else if(someObject.addEventListener)
    		someObject.addEventListener('click',myFunc,false);
    	else someObject.onclick = "myFunc(this.name,this.checked,this.id)";
    	...
    }
    
    function myFunc(cName,cCh,cId)
    {
    	if(cName.srcElement)
    	{// IE
    		cCh   = cName.srcElement.checked;
    		cId   = cName.srcElement.id;
    		cName = cName.srcElement.name;
    	}
    	else if (cName.target)
    	{// Mozilla
    		var el = cName.target;
    		cCh    = el.checked;
    		cId    = el.id;
    		cName  = null;
    		cName  = el.name;
    	}
    	// В Опере можно в установке события сразу указать все параметры
    }
    


    2. Проблемы с курсором, и их решения.
    2.1. Чтобы во всех браузерах курсор отображался "рукой", следует использовать не "cursor: hand" ( JS: object.style.cursor = "hand"), а "cursor: pointer" ( JS: object.style.cursor = "pointer").
    Однако, и в этом случае, не всё так просто, см. 2.2.


    2.2. В Фаерфоксе, при наведении на текстовые поля (textarea, input type='text') курсор останется прежним и не изменится на установленный. Чтобы курсор всё-таки изменился, требуется добавить автоматический оверфлоу - overflow: auto ( JS: object.style.overflow = "auto") для соответствующего поля. При этом, во всех остальных браузерах может изменится стилевое отображение, не стоит об этом забывать!
    Автор: Se#
    Добавил: Se#
    Дата создания: 23.03.2010 00:00:00
    Дата последнего изменения: 23.03.2010 00:00:00
    Просмотров: 595
    Комментировать
    Ваше имя:
    Для проверки того, что Вы человек, а не робот, пожалуйста, ответьте,каким будет результат нижеприведённого примера (цифрой):
    Если к шести прибавить один, то получится:
    Нет комментариев
    Ещё материалы автора статьи (Se#):
    Новости (35)
    Рассказы (40)
    Стихи (54)
    Замечательный день (1)
    Эмоции в картинках (1)
    Комментарии (1)