Javascript.RU

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

load и динамическое обновление страницы
Всем привет! Необходимо реализовать динамическое обновление страницы с загрузкой в div с id="content" стороннего файла *.php.

Для загрузки файла использую команду по нажатию кнопки меню:

$('#content').load($(obj).attr('name'));


На странице все видно, но перестают работать скрипты подключенные в конце подгружаемого файла (при подключении на прямую все ок), а также при просмотре кода страницы в блоке div id="content" ничего нет, в чем может быт проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2012, 02:48
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

IONEX,
через $().load скрипты со страницы не подключаются

Как нидь нидь так

<script>
function LoadMy(Link,selektor){
function getXmlHttp(){var xmlhttp;try{xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(E){xmlhttp=false}}if(!xmlhttp&&typeof XMLHttpRequest!='undefined'){xmlhttp=new XMLHttpRequest()}return xmlhttp}
var xmlhttp=getXmlHttp();xmlhttp.open('GET',Link,true);xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){if($(selektor).html()!=null){$(selektor).append(xmlhttp.responseText)}}}};xmlhttp.send(null);
}
</script>

<div id="content"></div>

<script>
 var Link=$(obj).attr('name');
 var selektor='#content';
 LoadMy(Link,selektor);
</script>

Последний раз редактировалось Deff, 08.07.2012 в 03:22.
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2012, 11:31
Аспирант
Отправить личное сообщение для IONEX Посмотреть профиль Найти все сообщения от IONEX
 
Регистрация: 08.01.2012
Сообщений: 32

Я бы скопипастил код javascript, но не понимая что там написано не хочу. Хотел бы разобраться средствами jquery, при том, что скрипты все-таки подключаются. Проверил:
$('#content').load('file.php');

в file.php поставил внизу
....контент...
<script type="text/javascript">alert('Скрипт выполняется!!');</script>

Контент появляется и аlert работает, но не могу заставить работать плагин автоматического масштабирования текста - fittext. Переписал alert('Скрипт выполняется!!'); на $(".conteiner").fitText(1.2); в конце файла file.php
....контент...
<script type="text/javascript">
         $(".conteiner").fitText(1.2);
</script>

Пробую:
$('#content').load('file.php');

При этом на странице ничего не появляется, а просмотреть код который находится в div с id content, средствами opera, в обоих случаях не могу.
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2012, 11:53
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

лучше загружать с помощью ajax get и потом вставлять
$.get('file.php', function(t){$('#content').html(t)})
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2012, 12:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от IONEX
Я бы скопипастил код javascript, но не понимая что там написано не хочу.
А Вы понимаете как работает $('#content').load('file.php'); ?

точно так же будет работать и LoadMy('file.php','#content');

(*Точнее наоборот - посколь всё работает через XMLHttpRequest

А вообще есть Гугол для понимания
Ответить с цитированием
  #6 (permalink)  
Старый 08.07.2012, 12:38
Аспирант
Отправить личное сообщение для IONEX Посмотреть профиль Найти все сообщения от IONEX
 
Регистрация: 08.01.2012
Сообщений: 32

Сообщение от vadim5june Посмотреть сообщение
лучше загружать с помощью ajax get и потом вставлять
$.get('file.php', function(t){$('#content').html(t)})
Да, согласен тоже к этому пришел:

$.get($(obj).attr('name'),function(response, status, xhr){
   alert(response);
   $('#content').html(response);
});


response содержит нужный мне код

Все вставляется и код script:

....контент...
<script type="text/javascript">
         $(".conteiner").fitText(1.2);
</script>


выполняется, но почему-то только один раз, хотя должен отрабатывать каждый раз при масштабировании окна. Поэтому вопрос был задан изначально неправильно. Код fittext вообщем-то известен, приводить не буду (сайт fittextjs.com).

Вообщем проблема осталась, при масштабировании окна текст один раз масштабируется к окну, а после, при изменении масштаба окна, - нет, в чем дело?

Также не могу понять почему код response не виден внутри div при просмотре кода страницы?

P.S. 2 Deff, "точно так же будет работать и LoadMy('file.php','#content');" да понимаю, но все что касается функции getXmlHttp() мне не понятно, хотя, наверно, и очень просто. Начинал (и продолжаю) изучение javascript с jquery и не вижу пока смысла уделять время обычному javascript, т.к. код становится намного понятней с использованием jquery.
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2012, 12:48
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от IONEX
Также не могу понять почему код response не виден внутри div при просмотре кода страницы?
Динамически подгружаемые скрипты не видны в дебаге на странице
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2012, 12:54
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от IONEX Посмотреть сообщение
Также не могу понять почему код response не виден внутри div при просмотре кода страницы?
напишите alert(div.innerHTML)-и увидите
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2012, 12:54
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от IONEX
выполняется, но почему-то только один раз, хотя должен отрабатывать каждый раз при масштабировании окна. Поэтому вопрос был задан изначально неправильно. Код fittext вообщем-то известен, приводить не буду (сайт fittextjs.co
Выложите рабочий вариант этого(конкретно масштабирования) куска скрипта вместе с HTML контентом, дабы он запускался в топике

типо
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>

<div id=Privet>Privet</div>


<script type="text/javascript">
alert($("#Privet").text())
</script>


Как оформлять - тут => http://javascript.ru/formatting
Ответить с цитированием
  #10 (permalink)  
Старый 08.07.2012, 14:12
Аспирант
Отправить личное сообщение для IONEX Посмотреть профиль Найти все сообщения от IONEX
 
Регистрация: 08.01.2012
Сообщений: 32

Основной код: index.php

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery.fittext.js"></script>
<ul id="menu">
    <li>
        <a href="#" name="menu1.php" id="tabs1" >меню1</a>
    </li>
    <li>
        <a href="#" name="menu2.php" id="tabs3" >меню2</a>
    </li>
</ul>

<div id="content"></div>

<script language="javascript">
            //Кеширование элементов меню
            var menu=$('#menu').children('li');
            var menu_link=$(menu).children('a');
            $(menu_link).click(activeElement);
            function load_content(obj){
                $.get($(obj).attr('name'),function(response, status, xhr){
                    $('#content').html(response);
                });
            }  

            function activeElement(obj) {
                   load_content($(this));
                });
            }
</script>


Файл menu1.php который подгружается для пункта меню1

<div class="home_service">
    <p>что-то.</p>
</div>
<script type="text/javascript">
    $(".home_service p").fitText(6);
</script>


Плагин jquery.fitText.js

(function( $ ){
	
	$.fn.fitText = function( kompressor, options ) {
	    
	    var settings = {
        'minFontSize' : Number.NEGATIVE_INFINITY,
        'maxFontSize' : Number.POSITIVE_INFINITY
      };
	
			return this.each(function(){
				var $this = $(this);              // store the object
				var compressor = kompressor || 1; // set the compressor
        
        if ( options ) { 
          $.extend( settings, options );
        }
        
        // Resizer() resizes items based on the object width divided by the compressor * 10
				var resizer = function () {
					$this.css('font-size', Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)));
				};

				// Call once to set.
				resizer();
				
				// Call on resize. Opera debounces their resize by default. 
      	$(window).resize(resizer);
      	
			});

	};

})( jQuery );
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Select, при выборе сразу происходит обновление страницы с выбранным параметром MCB Общие вопросы Javascript 9 03.10.2012 23:33
обновление части страницы sarkis AJAX и COMET 0 19.10.2011 17:52
Обновление страницы AndreyS AJAX и COMET 6 16.05.2011 15:55
Обновление страницы A.N.R.I jQuery 3 30.03.2010 14:47
Цикличное обновление страницы Roman_kstu Общие вопросы Javascript 7 29.05.2008 05:55