✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Коротка порада щодо приховання накладень розширень веб-переглядача

15

З мого досвіду більшість накладень розширень браузера використовують фон із типом data:image/svg+xml. Крім того, кожне з цих накладень використовує вбудовані стилі (а не зовнішні таблиці стилів) для візуалізації своїх кнопок (або будь-яких елементів керування, які вони вибирають для рендерингу).

Це означає, що ми можемо використовувати деякі методи JavaScript, щоб знаходити елементи з такими атрибутами, а потім перемикати їх видимість.

Але по-перше, навіщо нам навіть приховувати їх?

Приховування накладень розширення браузера

Взагалі кажучи, щоразу, коли ці накладки відображаються, вони призначені для збереження в якійсь службі закладок, будь то Pinterest, Buffer, Pocket чи щось інше.

Релевантні випадки використання

Крім того, принаймні у тому випадку, про який я говорю, вони рендеряться кожного разу, коли курсор наводиться на зображення. Але що, якщо ми не хочемо, щоб це сталося?

Приклад:

  • Можливо, ми працюємо над плагіном, який запускатиме його накладання, і хочемо приховати інші спливаючі вікна.
  • Або, можливо, ми запускаємо інше спливаюче вікно, яке містить зображення, і ми не хочемо, щоб накладення з’являлися на цих зображеннях.

У будь-якому випадку, ось один із способів приховати накладення залежно від ваших потреб.

Процес

Оскільки WordPress за замовчуванням включає jQuery, я збираюся використовувати його як бібліотеку вибору. Але це можна так само легко використати, знайшовши всі елементи за вказаним іменем класу та перебравши їх (якщо ви вирішите використовувати мінімальний JavaScript).

По-перше, ми хочемо почати з  елемента body, а потім поглянути, скажімо, на всі  елементи span (оскільки вони, як правило, є найпопулярнішими елементами – знову ж таки, лише з мого досвіду – і підготуватися до їх ітерації ):

var hideExtensions = function() {
    $('body')
      .children('span')
      .each(function() {
      });
};

Далі ми хочемо перевірити наявність data:image/svg+xml у атрибуті inline style. І, якщо він знайдений, то змініть видимість елемента :

if (-1 !== $(this).attr('style').indexOf('data:image/svg+xml;')) {
  if ('hidden' !== $(this).css('visibility')) {
    $(this).css('visibility', 'hidden');
  }
}

Якщо ви хочете перемкнути видимість елемента, вам потрібно буде налаштувати друге положення, яке буде видаляти приховане значення, коли це необхідно. Якщо ви хочете зробити це, ви можете легко додати це :

if (-1 !== $(this).attr('style').indexOf('data:image/svg+xml;')) {
    if ('hidden' !== $(this).css('visibility')) {
        $(this).css('visibility', 'hidden');
    }
} else {
    $(this).css('visibility', 'visible');
}

Остаточна функція може виглядати приблизно так :

var hideExtensions = function() {

  $('body')
      .children('span')
      .each(function() {
          if (-1 !== $(this).attr('style').indexOf('data:image/svg+xml;')) {
              if ('hidden' !== $(this).css('visibility')) {
                  $(this).css('visibility', 'hidden');
              }
          } else {
              $(this).css('visibility', 'visible');
          }
      });
};

Тоді вам просто потрібно подзвонити hideExtensions();, коли це необхідно.

Кілька слів про продуктивність

Оскільки ми скануємо підмножину елементів у DOM, це може стати проблемою продуктивності, особливо якщо є багато елементів одного типу.

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі