powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery и обработка событий в Webkit-браузерах
2 сообщений из 2, страница 1 из 1
jQuery и обработка событий в Webkit-браузерах
    #38707067
xPhoenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
function moveWindowToFront(e){
    if ($(e.target).parents("div.window").hasClass("top-window)){
        return; //Обычная обработка события
    } else {
        $("div.top-window").removeClass("top-window"):
        $(e.target).parents("div.window").detach().appendTo("body");
    }
}



Эта функция обрабатывает событие mousedown , которое возникает при нажатии кнопки мыши внутри окна (div.window). При этом проверяется через наличие css-стиля, находится ли окно уже на переднем плане, и если нет, то с помощью конструкции detach().appendTo() блок переносится на передний план.
Z-index для блоков вычисляется браузером автоматически. Раньше у меня было решение со счётчиком, но оно было слишком сложным и неудобным в использовании, поэтому указанный способ перемещения является основным.
Проблема в том, что если внутри блока div.window находится кнопка закрытия окна div.window-close-btn, в Mozilla Firefox и Internet Explorer сначала вызывается обработчик события для этой кнопки, и только потом происходит распространение события вверх по иерархии DOM и вызов обработчика moveWindowToFront(). В Webkit-браузерах обработка событий производится в обратном порядке, поэтому для срабатывания обработчика для div.window-close-btn приходится делать два клика - первый переносит окно на передний план, а второй уже запускает обработчик.

Как сделать так, чтобы обработка событий в Webkit-браузерах производилась таким же образом, как и в Mozilla Firefox и IE? Желательно решение для jQuery, я стараюсь не прибегать к нативному JavaScript'у без крайней необходимости.

P.S. Да, можно было бы написать свой аналог функции on(), но хочется узнать, может быть, есть уже готовое решение?
...
Рейтинг: 0 / 0
jQuery и обработка событий в Webkit-браузерах
    #38707598
Pavel Kurakin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня конечно уровень владения предметом чуть выше нуля, но я бы эту функцию переписал так.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function moveWindowToFront(e){
    var $foo = $(e.target).parents("div.window"); //это что бы два раза не вставать
    //если не на переднем плане, то поднимем
    if (!$foo.hasClass("top-window")) {
      $("div.top-window").removeClass("top-window");
      $foo.detach().appendTo("body");
    }
    
    return; //Обычная обработка события
}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery и обработка событий в Webkit-браузерах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]