Показать сообщение отдельно
  #1 (permalink)  
Старый 15.04.2015, 02:02
Интересующийся
Отправить личное сообщение для Foxeh Посмотреть профиль Найти все сообщения от Foxeh
 
Регистрация: 15.04.2015
Сообщений: 20

jQuery навигация, утечка памяти
Здравствуйте! Не могу понять, где ошибка в моем скрипте.
- Есть сайт, цель на котором - реализация плавной смены контента внутри блока main. Причина - в итоге есть необходимость играть музыку из раздела аудиозаписей при всей навигации по сайту. Однако, сейчас я ловлю уже 2 проблемы:
- Если выходить на сайт с телефона с 3g - то страницы, на которых есть JS код - не выполняют его (с WiFi нет проблем)
- Если многократно кликнуть на линк с такой страницей - все, что отрабатывалось на ней - перестает работать, в консоль либо не падает ничего, либо
Код:
net::ERR_INSUFFICIENT_RESOURCES error ...
Сам скрипт навигации

$(function() {
  String.prototype.decodeHTML = function() {
    return $("<div>", {html: "" + this}).html();
	
  };

  var $main = $("main"),
  
  init = function() {
      
  },
  
  ajaxLoad = function(html) {
    document.title = html
      .match(/<title>(.*?)<\/title>/)[1]
      .trim()
      .decodeHTML();

    init();
  },
  

  loadPage = function(href) {
	//console.log(($main.load).html());
	$main.load(href + " main>*", ajaxLoad);
	
			$("main").css("display", "none");
			$("main").fadeOut(600);
			$("main").fadeIn(600);
		 //console.log(($main));
		 $(document).ajaxComplete(function() {

		   $.get(href, function(scripts) {
					
					var megafurrydom = document.createElement('div');
					megafurrydom.innerHTML = scripts;
					var scr = megafurrydom.getElementsByTagName('script');
				//	 console.log(scr);
			/*	$.each(scr, function (index, lhs)
				{
				$.getScript(lhs);
				eval(lhs);
				console.log(lhs);
				})*/
					for (var i = 0; i < scr.length; ++i) {
					jQuery(document).ready(function ($){
		
							//eval(scr[i].text);
							eval(scr[i].innerHTML);
							//console.log(scr[i]);
							})
							}
				})
				})

							
  };
  
  init();
  
  
  $(window).on("popstate", function(e) {
    if (e.originalEvent.state !== null) {
      loadPage(location.href);
	 // console.log("5");
    }
  });

  $(document).on("click", ".transition", function() {
    var href = $(this).attr("href");
	

    if (href.indexOf(document.domain) > -1
      || href.indexOf(':') === -1)
    {
      history.pushState({}, '', href);
      loadPage(href);
      return false;
    }
  });
});


Не пинайте особо больно, ибо ранее с JS не работал вовсе. Это первый проект, в котором пришлось копаться и в этих дебрях.
Ответить с цитированием