Я дизайнер, не очень знакомый с javascript, но в итоге мне удалось исправить одну ошибку на существующем веб-сайте, используя Bootstrap 3.4.1 Popover. Владелец сайта жалуется, что в контенте, загруженном с помощью popover, отсутствуют некоторые элементы. Основываясь на других вопросах и ответах здесь, я думаю, что мне нужно добавить это $.fn.popover.Constructor.Default.whiteList.html = [];
где-нибудь в коде. Мое предположение было выше var elements
, но я получаю это сообщение об ошибке; Cannot read property 'whiteList' of undefined
.
К вашему сведению, когда я понижаю версию Bootstrap с 3.4.1 до 3.3.7, всплывающее содержимое отображается, как и ожидалось.
var elements = $(context).find('[data-toggle=popover]').toArray();
for (var i = 0; i < elements.length; i++) {
var $element = $(elements[i]);
var options = $.extend({}, $.fn.popover.Constructor.DEFAULTS, settings.bootstrap.popoverOptions, $element.data());
// Store the original trigger.
options.originalTrigger = options.trigger;
// If the trigger is "click", then we'll handle it manually here.
if (options.trigger === 'click') {
options.trigger = 'manual';
}
// Retrieve content from a target element.
var target = options.target || $element.is('a[href^="#"]') && $element.attr('href');
var $target = $document.find(target).clone();
if (!options.content && $target[0]) {
$target.removeClass('element-invisible hidden').removeAttr('aria-hidden');
options.content = $target.wrap('<div/>').parent()[options.html ? 'html' : 'text']() || '';
}
// Initialize the popover.
$element.popover(options);
// Handle clicks manually.
if (options.originalTrigger === 'click') {
// To ensure the element is bound multiple times, remove any
// previously set event handler before adding another one.
$element
.off('click.drupal.bootstrap.popover')
.on('click.drupal.bootstrap.popover', function (e) {
$(this).popover('toggle');
e.preventDefault();
e.stopPropagation();
})
;
}
}