Javascript.RU

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

полная замена html страницы
Добрый день,

проблема такая: контент страницы вставить в другой шаблон, не уходя с исходной страницы, и не теряя скрипты и стили

страница с контентом index.html
<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
		<link rel="stylesheet" href="//localhost/share/assets/css/style.css">        
    </head>
    <body>
		<div id="content"> 
			<h1>Page content</h1>
			<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
			<button id="click-me">test</button>
		</div>
		<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
		<script src="//localhost/share/assets/js/script.js"></script>
		<script>		
		$(function() {		
			$('#content').find('h1').css({'text-transform':'uppercase'});			
		});
		</script>		
	</body>
</html>



страница шаблона mobile-page.html
<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>Mobile page</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
		<link rel="stylesheet" href="//localhost/share/assets/css/style-mobile.css">
    </head>
    <body>
		<nav class="mobile-nav">
		<ul>
		<li><a href="#">Menu 1</a></li>
		<li><a href="#">Menu 2</a></li>
		</ul>	
		</nav>
		<div id="mobile-content"> 
			
		</div>
		<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
		<script src="//localhost/share/assets/js/script-mobile.js"></script>
		<script>		
		$(function() {		
			console.log(opts.lang);			
		});
		</script>
	</body>
</html>


script.js (index.html)
$(function() {		
	$('#click-me').click(function() {
	  console.log('click');
	});
		
	var origContent = $('#content').html();

	$.ajax({
		url: '//localhost/share/mobile-page.html', 
		cache: false,
		dataType: 'html',
		success: function(response) {			
			
			var startHead = response.indexOf("<head>");
			var endHead = response.indexOf("</head>");		  
			var headString = response.substring(startHead+6,endHead);

			var startBody = response.indexOf("<body>");
			var endBody = response.indexOf("</body>");
			var bodyString = response.substring(startBody+6,endBody);
			
			// дальше не совсем понимаю что делать...
			
			var newContent = $(bodyString).filter('#mobile-content').empty().append(origContent);
			
			
			
			console.log(newContent.html());
			console.log($(bodyString).html());
			$('body').html($(bodyString).html());			
		}
	});
});


не пойму как мне теперь origContent вставить в <div id="mobile-content"> из полученного шаблона и потом полностью заменить содержание <body> в index.html на <body> из шаблона.
может я не туда рою и надо было как то:
document.open("text/html", "replace");        
document.write(response);
document.close();

?
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2016, 14:48
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Может приделать и хидер к заменяемой странице ?
А данные работы скриптов, с необходимостью сохранить загнать на localStorage
Тогда можно вписать всю страницу через document.write
=================
Либо вставить(вставляемую) страницу в пустой фрейм во всю страницу, а контент текущей - скрыть
Работа с фреймом с основной страницы - возможна

Последний раз редактировалось Deff, 01.11.2016 в 14:51.
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2016, 16:24
Новичок на форуме
Отправить личное сообщение для mixas Посмотреть профиль Найти все сообщения от mixas
 
Регистрация: 13.04.2009
Сообщений: 5

спасибо за идею! сохранил content в localStorage, потом document.write(response).
скрипты и стили из шаблона response загрузились.

скрипт из шаблона mobile-page.html
<script src="//localhost/share/assets/js/script-mobile.js"></script>
		<script>		
		$(function() {		
			console.log(opts.lang);
			
			$('#mobile-content').html(localStorage.getItem('orig-content'));
			
		});
		</script>
	</body>


теперь контент там где надо, но пропали скрипты и стили из оригинальной html страницы.
может их тоже как то сохранить и потом добавить к шаблону?
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2016, 18:05
Новичок на форуме
Отправить личное сообщение для mixas Посмотреть профиль Найти все сообщения от mixas
 
Регистрация: 13.04.2009
Сообщений: 5

я так понял document.write не самый лучший вариант из за "A Parser-blocking, cross-origin script ..."
попробую с фреймами
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вытащить html из страницы не открывая её в браузере NoobJs AJAX и COMET 4 22.02.2015 06:40
Полная загрузка страницы gam0ra Общие вопросы Javascript 2 02.02.2015 17:42
Динамическая замена HTML в таблице ArMikael Общие вопросы Javascript 4 25.06.2014 11:47
Получить html код удаленной страницы AntonP Общие вопросы Javascript 19 02.05.2012 16:15
Замена текста в атрибуте HTML тега, например часть url vasa666 Общие вопросы Javascript 6 24.02.2011 10:18