Итак, я пытаюсь изменить некоторые из моих JavaScript
Из этого
content.forumobserver = content.build.forumobserver = function() {
var target = document.querySelector('#content-padding');
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function(mutation, idx, mutated) {
if(mutation.addedNodes.length === 21) {
for(var i = 0; i < mutation.addedNodes.length; i++) {
if(mutation.addedNodes[i].id === 'post_container') {
// update
content.c_page = document.querySelector('.page_current');
content.t_url = content.c_page.href;
content.t_page = content.t_url.replace(content.regex.url, '$3');
// reload
content.init(options);
// page is loaded
observer.disconnect();
};
};
};
});
});
$.each(document.querySelectorAll('.yui3-pjax'), function(idx, pjax) {
pjax.addEventListener('click', function() {
observer.observe(target, {
childList: true
});
});
});
};
К этому
content.forumobserver = content.build.forumobserver = function() {
var target = document.querySelector('#content-padding');
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function(mutation, idx, mutated) {
if(mutation.addedNodes.length === 21) {
for(var i = 0; i < mutation.addedNodes.length; i++) {
if(mutation.addedNodes[i].id === 'post_container') {
// update
content.c_page = document.querySelector('.page_current');
content.t_url = content.c_page.href;
content.t_page = content.t_url.replace(content.regex.url, '$3');
// reload
content.init(prefs);
// page is loaded
observer.disconnect();
};
};
};
});
});
document.body.addEventListener('click', function(evt) {
if(evt.target.classList.contains('yui3-pjax')) {
observer.observe(target, {
childList: true
});
};
}, true);
};
Единственная проблема заключается в том, что последний из двух, наблюдатель, не отключается, когда он достигает точки, в которой я этого хочу. Я вызываю content.forumobserver() в функции content.init(). Причина, по которой я знаю, что он не отключается вместо добавления нескольких прослушивателей событий в тело, заключается в том, что если я добавлю оператор if для проверки инициализированного значения, затем вызову content.forumobserver() и установлю инициализированное значение true в содержимом. init() MutationObserver по-прежнему повторно добавляет весь контент, но затем для каждой дополнительной загруженной страницы добавленный контент удваивается, 1, 2, 4, 8 и так далее.
Итак, как я могу отключить MutationObserver после загрузки содержимого из захваченного события вместо того, чтобы явно привязывать события щелчка к якорям yui3-pjax?