Як зробити спливаючі вікна на jQuery (інформери)

Досить часто при розробці різних web-додатків та сайтів, виникає одне й те саме завдання – зробити інформери на jQuery. І, зазвичай, це чотири спливаючі вікна:

  • Інформація про помилку
  • Підтвердження дії
  • Завантаження та очікування
  • Виведення інформації

Використовувати з цією метою окремі бібліотеки - безглуздо. І тому є кілька причин.

По-перше, те, що одна бібліотека не конфліктує з одним з ваших проектів - зовсім не означає, що в іншому проекті не буде конфліктів між скриптами.

По-друге, рідко можна зустріти бібліотеку тільки з чотирма вікнами, що спливають. А це означає, що для вирішення невеликого завдання вам доведеться підключати всю "могутність" бібліотеки разом з її стилями та картинками. Що часом може непогано позначитися на продуктивності.

По-третє, як тільки вам треба буде щось змінити, лише "якусь дрібницю", то ви можете дізнатися неприємну новину - "бібліотека не підтримує такі налаштування". У такому разі варіантів буде два: або міняти завдання, або міняти бібліотеку. Погодьтеся, що це трохи хитромудро для простих вікон.

По-четверте, бібліотека тягне у себе як необхідність дізнатися кілька назв функцій, а й, як мінімум, вникнути у основи самої бібліотеки. А цей час і часом досить непоганий.

Тому найпростіше - один раз зробити свої спливаючі вікна, і коригувати їх від програми до додатку. На резонне заперечення Існує стандартний віджет діалогу в самому jQuery, навіщо щось писати? - Є кілька простих відповідей.

По-перше, саме цей віджет і використається.

По-друге, щоразу писати по 10-15рядків коду тільки одних параметрів - рано чи пізно набридне.

По-третє, так чи інакше настає момент, коли ви починаєте колупатися в html усередині діалогу, тому що в голові виникнуть наступні думки "якось шапка діалогу виглядає неакуратно в загальному стилі мого сайту" / "кнопки б трохи правіше розташувати" / " як би прибрати цей хрестик зверху" / "а ось якби тут трохи .." І т.п.

І перше, з чого необхідно почати - це зібрати невеликі вимоги до таких вікон, щоб не виникло сюрпризів. Після деякого часу вийшов приблизно цей список:

  • Підключення та налаштування вікон повинно відбуватися автоматично (вам необхідно підключити лише файли js, css та картинку для завантаження)
  • Повторне підключення файлу скрипта не повинно викликати збій
  • Заголовок та текст мають елементарно змінюватися
  • Використовувати лише стандартні механізми jQuery
  • Без вказівки будь-яких налаштувань у вашому коді кожне вікно має виглядати приємно
  • Інтерфейс має бути простим
  • Завжди має бути можливість повісити оброблювач на кожну з кнопок
  • У вас завжди має бути можливість швидко підкоригувати дії віконців

Примітка : Звичайно, частина цього списку може здатися вам зайвою і "так зрозумілою". Але, як показує практика, часом про це забувають, і в результаті отримують потужні, але складні для використання рішення. І, в результаті, для цих рішень пишуться інші рішення, які дозволяють просто і швидко отримати те, що потрібно. Погодьтеся, що це дещо марнотратно. Тому, якщо ви згодом писатимете свої скрипти і модулі, то не забувайте про те, що у вашому списку вимог завжди повинні бути пункти з розряду "отже зрозуміло".

Пишемоспливаючі вікна на jQuery

Після того, як було визначено перелік вимог, необхідно скласти структуру тестового проекту з урахуванням вимог. Отримуємо таке:

  • css - каталог
  • template.css - файл стилів віконець
  • images - каталог
  • ajax-loader.gif - єдина картинка - прокрутка для завантажувача
  • js - каталог
  • jquery-msg.js – скрипт для створення спливаючих вікон в автоматичному режимі
  • index.html - файл для тестового запуску
  • Як видно, структура є досить простою, і її легко інтегрувати на будь-який сайт. Максимально, що від вас може знадобитися - це змінити атрибут "src" усередині js, але про це пізніше.

    Складаємо index.html

    Для тестового висновку складемо простий html-файл, усередині якого підключатимуться jQuery бібліотеки та стилі з web-ресурсу самого jQuery. Також підключаємо всередині файлу стиль спливаючих вікон template.css і скрипт jquery-min.js. А всередину секції body розмістимо чотири кнопки для тестового запуску. І напишемо невеликий скрипт для обробників клацань для кнопок. У результаті буде наступний код:

    Як бачите, все досить просто і немає жодних складнощів. Якщо ви відкриєте зараз index.html, то має відобразитися чотири кнопки (як показано на малюнку).

    Пишемо скрипт jquery-msg.js

    Примітка : Звичайно, можна було об'єднати ряд функцій у загальну частину, але тоді буде порушена вимога "У вас завжди має бути можливість швидко підкоригувати дії вікон". Кожне вікно розраховане на власну HTML структуру (хоч і однотипну в рамках прикладу). А це означає, що як тільки ви поміняєте частину HTML-коду, наприклад, біля вікна з підтвердженням дії, то у разі об'єднанняоднотипних функцій це може призвести до необхідності змінювати інші вікна, що й суперечить вимогам.

    Усередині загальної частини створюється та налаштовується все те, що технічно необхідно, але не залежить від функцій самих вікон. А саме: створити модальне вікно з параметрами користувача (з урахуванням преднастроенных параметрів), автоматично додати його в DOM, вставити передану html-розмітку, при необхідності додати класи стилів і видалити стандартний заголовок (щоб повністю очистити область; плюс до всього, власний заголовок легше налаштовувати). Сам код:

    Тепер на основі загального інтерфейсу необхідно створити вікно підтвердження. З урахуванням усіх вимог, виходить наступний код:

    Файл стиль template.css

    Підсумок - красиві спливаючі вікна на jQuery

    Тепер збережемо всі отримані файли в якійсь папці, відкриємо браузером файл index.html і по черзі натискатимемо на кнопки.

    При натисканні на кнопку "Показати помилку" буде показано наступне спливаюче вікно:

    інформери

    При натисканні на кнопку "Підтвердіть дію" з'явиться таке вікно:

    спливаючі

    При натисканні на кнопку "Завантаження" спочатку з'явиться, а потім закриється по setTimeout наступний інформер:

    спливаючі

    При натисканні на кнопку "Інформація", на екрані з'явиться таке вікно:

    спливаючі

    "Ось і все! Скрипт готовий!" - скаже хтось. Але це не так. Тепер необхідно пройтися всіма пунктами вимог і подивитися наскільки написаний скрипт відповідає їм.

    • Підключення та налаштування вікон має відбуватися автоматично (вам необхідно підключити лише файли js, css і картинку для завантаження) - Є (видно з самого index.html)
    • Повторне підключення файлу скрипта не повинно викликати збій.(спробуйте підключити вдруге файл)
    • Заголовок та текст повинні елементарно змінюватися - Є (просто передайте параметр)
    • Використовувати лише стандартні механізми jQuery - Є (використовується стандартний діалог та прості події)
    • Без вказівки будь-яких налаштувань у вашому коді, кожне вікно має виглядати приємно - Є (тут звичайно, "на смак та колір", але, тим не менш)
    • Інтерфейс повинен бути простим - Є (сам скрипт може бути не дуже простий для новачка, але з точки зору використання все дуже просто - дві функції show і hide)
    • Завжди має бути можливість повісити оброблювач на кожну з кнопок – Є (передача покажчика на функцію через параметри)
    • У вас завжди має бути можливість швидко підкоригувати дії вікон - Є (загальна частина збирає суто технічні моменти, логіка кожного вікна описується окремо, так що провести коригування потрібного вікна можна легко та безболісно)

    Ось тепер можна сказати, що скрипт готовий!

    Примітка : Звичайно, і тут не можна говорити фразу "Ну, нарешті!". Ще необхідно провести хоча б невелике тестування всіх вхідних параметрів, але це виходить за межі статті. Та й якщо виникне якась проблема, її завжди можна виправити. І пам'ятайте, що такі скрипти коригуються від додатка до додатку.

    Файл архів з вихідним кодом ви можете завантажити тут: