DOM элемент клонируется при хранении в хэше
Проблема на десятой строке.
Приложение (опрос) при переходе на другую страничку проверяет, есть ли она в кэше и либо подгружает либо показывает. Прячет предыдущую страничку нормально, но действия с уже имеющимися ранее дивами производятся не отражаясь в реальном DOM, свойства меняются только у элементов хэша. Как будто при сохранении они передаются по ссылке и после изменения связь с реальной страничкой обрывается. Яндекс с Гуглом на эту тему говорят что DOM элементы передаются только по ссылке, чтоб клонировать их нужно вызывать соответствующую функцию. А тут это происходит самопроизвольно. Наблюдается во всех браузерах. this.go_page = function(url) { params = url.split('?')[1]; if (!params) {params = 'page='+(this.page+1);} params+=('&id='+this.id); var to_page = params.match(/page\=(\d+)/i)[1]; if (this.cashe[this.lang]['page_'+to_page]!=undefined) { var prev = this.cashe[this.lang]['page_'+this.page]; prev.style.display = 'none'; var curr = this.cashe[this.lang]['page_'+to_page]; curr.style.display = 'block'; this.page = to_page; self.updatePos(); } else { new azsrw_Request(params, function(response) { var prev = self.cashe[self.lang]['page_'+self.page]; var container = document.getElementById(self.opts.ns+'survey_'+self.id); prev.style.display = 'none'; container.innerHTML+=response.match(/(\<div class\=\"azsw\-content\"\>[\s\S]*\<\/div\>)[\s\S]*\<\/div\>/)[1]; self.page = this.params.page; var pages = []; var subdivs = container.childNodes; for (var i=0; i<subdivs.length; i++) { if (subdivs[i].nodeType==1) if (subdivs[i].tagName.toLowerCase()=='div') { pages.push(subdivs[i]); } } self.cashe[self.lang]['page_'+self.page] = pages[pages.length-1]; var curr = self.cashe[self.lang]['page_'+self.page]; self.paginator(curr); self.updatePos(); }); } } |
Отловил. Проблема в innerHTML+=response, он перезаписывает весь контент и слетают ссылки на все элементы и события у этих элементов, в хэше остаются их трупики.
|
Часовой пояс GMT +3, время: 06:03. |