JavaScript捕获的事件侦听器和观察者
因此,我正在尝试更改一些JavaScript 由此JavaScript捕获的事件侦听器和观察者,javascript,mutation-observers,Javascript,Mutation Observers,因此,我正在尝试更改一些JavaScript 由此 content.forumobserver = content.build.forumobserver = function() { var target = document.querySelector('#content-padding'); var observer = new MutationObserver(function (mutations) { mutations.forEach(functio
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(“#内容填充”);
var观察者=新的突变观察者(功能(突变){
突变。forEach(功能(突变,idx,突变){
if(mutation.addedNodes.length==21){
对于(var i=0;i
对此
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.build.forumobserver=function(){
var target=document.querySelector(“#内容填充”);
var观察者=新的突变观察者(功能(突变){
突变。forEach(功能(突变,idx,突变){
if(mutation.addedNodes.length==21){
对于(var i=0;i
唯一的问题是,两者中的后一个,当观察者到达我想要的点时,它不会断开连接。我在content.init()函数中调用content.forumobserver()。我之所以知道它没有断开连接,而不是说在主体中添加多个事件侦听器,是因为如果我添加一个if语句来检查初始化值,然后调用content.forumobserver()并在content.init()函数中将initialized设置为true,MutationObserver仍然会重新添加所有内容,但是,每增加一个页面,添加的内容就会增加一倍,1、2、4、8,依此类推
那么,如何在从捕获的事件加载内容后使MutationObserver断开连接,而不必显式地将单击事件绑定到yui3 pjax锚?通过使用
content.forumobserver = content.build.forumobserver = function(evt) {
if(evt.target.classList.contains('yui3-pjax') || evt.target.parentNode.classList.contains('yui3-pjax')) {
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();
};
};
};
});
});
observer.observe(target, {
childList: true
});
};
};
document.body.addEventListener('click', content.forumobserver, true);
content.forumobserver=content.build.forumobserver=function(evt){
if(evt.target.classList.contains('yui3-pjax')| | evt.target.parentNode.classList.contains('yui3-pjax')){
var target=document.querySelector(“#内容填充”);
var观察者=新的突变观察者(功能(突变){
突变。forEach(功能(突变,idx,突变){
if(mutation.addedNodes.length==21){
对于(var i=0;i