Tooltipster — это мощная библиотека для создания интерактивных всплывающих подсказок на элементах веб-страницы. Для корректной работы требуется подключение CSS и JS файлов библиотеки. В стандартном случае это выглядит так:
<link rel="stylesheet" href="tooltipster.bundle.min.css">
<script src="jquery.min.js"></script>
<script src="tooltipster.bundle.min.js"></script>
Инициализация подсказки выполняется вызовом метода
.tooltipster() на выбранных элементах:
$('.tooltip').tooltipster({
content: 'Текст подсказки',
theme: 'tooltipster-shadow',
delay: 300
});
Ключевые параметры инициализации:
content — содержимое подсказки, может быть строкой,
HTML или jQuery-элементом.theme — стиль отображения подсказки. Tooltipster
предоставляет несколько стандартных тем, можно подключать свои.delay — задержка перед появлением подсказки в
миллисекундах.Tooltipster поддерживает как текстовый, так и HTML-контент. Для HTML
важно использовать опцию contentAsHTML: true:
$('.tooltip-html').tooltipster({
content: $('<span><strong>Жирный текст</strong> и обычный текст</span>'),
contentAsHTML: true,
interactive: true
});
Пояснения:
interactive: true позволяет пользователю
взаимодействовать с содержимым подсказки, например, нажимать кнопки или
ссылки внутри неё.tooltipster('content', newContent):$('.tooltip-html').tooltipster('content', 'Новый текст подсказки');
Tooltipster предоставляет широкий набор опций для управления поведением всплывающих подсказок:
trigger — событие, которое вызывает подсказку
(hover, click, custom).side — сторона появления подсказки (top,
bottom, left, right). Можно
указывать массив для автоматического выбора.maxWidth — максимальная ширина подсказки.functionBefore — колбэк перед отображением, позволяет
динамически изменять контент.functionReady — колбэк после появления подсказки.functionAfter — колбэк после скрытия.Пример использования нескольких опций:
$('.tooltip-dynamic').tooltipster({
trigger: 'click',
side: ['top', 'bottom'],
maxWidth: 300,
functionBefore: function(instance, helper){
var newContent = 'Динамический контент: ' + new Date().toLocaleTimeString();
instance.content(newContent);
}
});
Content Security Policy (CSP) контролирует, какие ресурсы могут загружаться на странице, предотвращая выполнение небезопасного кода. При работе с Tooltipster важно учитывать несколько аспектов:
script-src и style-src).<script src="tooltipster.bundle.min.js" nonce="yourNonceValue"></script>
nonce-значения для
разрешения конкретных скриптов и стилей:Content-Security-Policy: script-src 'self' 'nonce-yourNonceValue'; style-src 'self' 'nonce-yourNonceValue';
Если контент подсказки формируется динамически и содержит HTML,
необходимо исключить потенциально опасные элементы (например,
<script>). Tooltipster поддерживает безопасное
вставление HTML:
$('.tooltip-safe').tooltipster({
content: $('<div>').text('Безопасный текст с HTML тегами'),
contentAsHTML: true
});
.text() вместо
.html() предотвращает выполнение скриптов, что совместимо с
CSP.Некоторые темы Tooltipster применяют inline-стили через JavaScript. При строгой CSP рекомендуется использовать заранее скомпилированные CSS-файлы и отключить генерацию inline-стилей:
$('.tooltipster').tooltipster({
theme: 'tooltipster-light',
minWidth: 200,
maxWidth: 400,
contentAsHTML: true
});
link с
разрешённого источника.При работе с CSP важно, чтобы все изображения, шрифты и дополнительные файлы для подсказок загружались с доверенных доменов:
img-src 'self' https://example.com;
font-src 'self' https://fonts.gstatic.com;
Tooltipster не требует внешних ресурсов по умолчанию, но при кастомных темах или иконках необходимо учитывать эти директивы.
Tooltipster позволяет использовать функции обратного вызова
(functionBefore, functionReady,
functionAfter) без нарушения CSP, если они определены во
внешних JS-файлах. Пример безопасной интеграции:
function updateTooltipContent(instance, helper){
var safeContent = 'Текущая дата: ' + new Date().toLocaleDateString();
instance.content(safeContent);
}
$('.tooltip-csp').tooltipster({
functionBefore: updateTooltipContent,
interactive: true
});
Для сайтов с политикой default-src 'none' и строгими
ограничениями, Tooltipster остаётся совместимым при соблюдении
правил:
Это позволяет сохранять интерактивность подсказок без нарушения политики безопасности.
Tooltipster в связке с правильно настроенной CSP обеспечивает безопасное и гибкое отображение всплывающих подсказок, управляемых как статическим, так и динамическим контентом. Правильное подключение, экранирование HTML и использование внешних JS-файлов гарантируют совместимость с современными стандартами безопасности веб-приложений.