if (!slideOutObserver && doc.querySelector('.slide-out-cms')) {
mutObv.observe(doc.querySelector('.slide-out-cms'), { attributeFilter: ['class'] });
slideOutObserver = true;
}
Ошибка консоли выглядит следующим образом: script5022: SyntxError
Я нажимаю, и это приводит меня к приведенному выше коду
Есть идеи или обходные пути?
При необходимости весь сценарий, в этом сценарии мы показываем пользователю сообщение о согласии на использование файлов cookie, которое перекрывает некоторые фиксированные элементы на странице. Мы делаем еще кое-что, чтобы перемещать и перемещать объекты вверх и вниз в зависимости от того, какие элементы видны:
// On document ready
$(function() {
var cookieAckId = 'cookie-acknowledgment',
pureCloudId = 'chatTrigger',
slideOutClass = 'slide-out-cms.show',
mobileContinue = 'fixed-button-container',
slideOutObserver = false,
consentText = 'This site uses essential cookies to function correctly. For more detailed information, please see our <a href = "//' + browser.getDomain() + '/privacy-policy/" target = "_blank" class = "u">privacy policy</a>. By continuing to use this website you consent to our use of cookies.',
mutObv;
//If the user closes/accepts the acknowledgment
function closeAck() {
// Remove the Acknowledgment from the page and shift floaters back
$('#' + cookieAckId).slideUp().queue(function() {
$(this).remove();
repositionFloaters();
});
//Kill Mutation Observer
mutObv.disconnect();
//Kill the resize listener
$(root).off('resize', repositionFloaters);
//set cookie
var d = new Date;
d.setFullYear(d.getFullYear() + 2);
$.cookie('acceptedGdprCookies', 'true', {
path: '/',
domain: '.' + browser.getDomain(),
expires: d,
});
}
// floaters are there, let's alter their position!
function repositionFloaters() {
var $cookieAck = $('#' + cookieAckId),
cookieAckHeight = 0,
$pureCloud = $('#' + pureCloudId),
$slideOut = $('.' + slideOutClass),
$mobileContinue = $('.' + mobileContinue);
if (!slideOutObserver && doc.querySelector('.slide-out-cms')) {
mutObv.observe(doc.querySelector('.slide-out-cms'), { attributeFilter: ['class'] });
slideOutObserver = true;
}
// If cookie Acknowledgment exists, grab it's height
if ($cookieAck.length) {
cookieAckHeight = $cookieAck.outerHeight();
}
// Shift up Purecloud and Slide Out if they exist
[$pureCloud, $slideOut, $mobileContinue].forEach(function($item) {
if ($item.length) {
$item.css('transform', 'translateY(-' + cookieAckHeight + 'px)');
}
});
// If both Slideout and purecloud exist, stop trying to observe for their addition
if ($pureCloud.length && $slideOut.length && cookieAckHeight > 0) {
mutObv.disconnect();
}
}
// Create the Cookie Acknowledgment
var $cookieAck = $('<div id = "' + cookieAckId + '"><div class = "relative"><div class = "ca-text col-xs-12"><span>' + consentText + '</span><div class = "ca-accept"></div></div></div>'),
$acceptBtn = $('<button class = "ca-accept-btn b">ACCEPT</button>').on('click', closeAck),
$closeBtn = $('<span class = "ca-close-btn icon-closepositive"></span>').on('click', closeAck);
$cookieAck.append($closeBtn);
$cookieAck.find('.ca-accept').append($acceptBtn);
$('body').append($cookieAck);
// Create Mutation Observer to watch for Purecloud and Slideout being added to the page
mutObv = new MutationObserver(repositionFloaters);
mutObv.observe(doc.body, { childList: true });
// Add Listener if the page is resized
$(root).on('resize', repositionFloaters);
// Upon creating of Cookie Acknowledgment element, try to shift floaters
repositionFloaters();
});
Как мы можем помочь избежать ошибок, если мы не понимаем, о какой ошибке вы говорите
все, что он говорит, это script5022: SyntaxError, когда я исследую строку, это приведенный выше код
mutObv.observe
, если это caniuse.com/#search=observe, вы не можете использовать его ни в чем, кроме Chrome
@Akrion Неправильный observe
: caniuse.com/#feat=mutationobserver
Понятно. Спасибо.
Включите достаточно кода, чтобы другие могли воспроизвести вашу ошибку в самом вопросе в виде минимальный воспроизводимый пример.
хорошо, готово - спасибо всем, что посмотрели
Если кому-то понадобится ответ для этого, я, наконец, решил его!
MS Edge не любит наблюдателя мутаций без атрибутов аргумента: true. Итак, правильный код будет выглядеть так:
if (!slideOutObserver && doc.querySelector('.slide-out-cms')) {
mutObv.observe(doc.querySelector('.slide-out-cms'), {
attributes: true,
attributeFilter: ['class']
});
}
Какие синтаксические ошибки?