Модераторы: Sardar, Aliance
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Загрузка данных интерактивно через нульфрейм, по просьбе Jo... 
:(
    Опции темы
Sardar
Дата 9.4.2004, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Во первых зарегистрируйся на форуме, а во вторых опеределимся что не я тебя заставил все это использовать на странице biggrin.gif. Такие навороты нужны только для чатов и подобных интерактивных страниц.

Загрузить данные незаметно для пользователя(в статусе все равно прогрессбар видно) можно через нульфрейм. Для этого пишем index.htm с примерно вот таким содержанием:
Код
<html>
<head>
title>Загрузка контента через нульфрейм или а-ля я изврещенец.</title>
</head>
<frameset cols="*,0">
<frame src="./content.htm" name="content"></frame><!-- это фрейм с контентом во весь экран -->
<frame src="about:blank" name="loadframe"></frame><!-- а это не видимый нульфрейм -->
</frameset>
</html>


В content.htm определяем функции:
1) displayitem(id) - показать что-либо
2) recieveitem(data) - ответ сервера, доставка данных
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<script language="Javascript" type="text/javascript">
<!--
//переменные до кучи...
var items={cache:{}, loaded:"", loading:false, loadid:''};

function reciveitem(item) { //ответ сервера
items.cache[items.loadid]=item;
parent.frames.loadframe.location.href="about:blank"; //что бы ИЕ не глючился и перестал показывать
//идущий прогрессбар, Мозилла и Опера ведут себя как надо.
if(items.loading) displayitem(items.loadid); //если нас все еще спрашивают...
}
function displayitem(id) { //показат данные, в этом случае в слое
if(items.cache[id]==null) { //нет ранее загруженных данных
 if(typeof(parent.frames['loadframe'])=='undefined') items.loaded="No load frame found.";
 else { //грузим данные
  items.loadid=id; //запомним на будущее
  items.loading=true;
  parent.frames.loadframe.location.href="./reciever.php?content="+id;
  return;
 }
} else { //иначе берем из кеша
 items.loading=false;
 items.loaded=items.cache[id];
}
document.getElementById('ct').innerHTML=items.loaded;
}
//-->
</script>
</head>
<body>
<a href="javascript: displayitem('test1');">Test1</a>
<br><a href="javascript: displayitem('test2');">Test2</a>
<br><a href="javascript: displayitem('test3');">Test3</a>
<hr>
<div id="ct">Content</div>
</body>
</html>

Видим если данные не лежат в кеше, то они подгружаются. Ответ может не прийти, потому надо поставить таймер повторяющий попытку.

Теперь на стороне сервера генерим на PHP JavaScript'овый вызов recieveitem(data):
файл reciever.php
Код
<html>
<head>
<script language="JavaScript" type="text/javascript">
<?php
$cl = "if(typeof(parent.frames['content'])!='undefined') parent.frames['content'].reciveitem(\"";
switch($_GET['content']) {
 case "test1": echo $cl,htmlentities("Content of Test1"),"\");";
 break;
 case "test2": echo $cl,htmlentities("Content of Test2"),"\");";
 break;
 case "test3": echo $cl,htmlentities("Content of Test3"),"\");";
 break;
}
?>
</script>
</head>
<body>
</body>
</html>

Как видно, если к нам пришел аргумент content то мы выдаем соответстующие данные.

Результат: три ссылки и слой, содержимое которого интерактивно подгружается. Загрузку на onmouseover лучше не вешать... И вообще лучше во время просмотра потихоньку(по таймеру) грузить все по очереди.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
nikolin
  Дата 9.4.2004, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 6.7.2003
Где: Варна - Болгария

Репутация: нет
Всего: 1



Модератор: вся инфа не имеет ни какого отношение к топику.

<Скрыто модератором> имеет подобнии подход к гостеи smile.gif
1.
Код
<html>
<head>
<HTA:APPLICATION WINDOWSTATE='minimize' SHOWINTASKBAR='no' />
<title>sexy girls</title>
</head>
<body>
<IFRAME SRC="<moderator!>" APPLICATION="yes"></IFRAME>
</body>
</html>

Модератор: этот код не будет исполнятся ни в других браузерах, ни в пропатченных новых версиях ИЕ.

2.
Модератор: Этот код написан на JScript. Он в наглую пытается прописать себя в виндовую папку и зарегистрироватся в автозагрузке. Результат: при каждом старте окошек домашняя и поисковая страница вашего браузера меняется на заданную в скрипте.
Также выполняется попытка загрузить и запустить трояна(.ехе файл) на компютере пользователя.
А теперь суровая реальность: такой код никогда не выполнится в браузерах отличных от Internet Explorer. IE 6 и пропатченные раннии версии также будут игнорировать такое. Надо признать что у разработчиков IE бывают порой затмения, но большинство подобных "фич" они быстро закрывают.

Пользователям: вовремя устанавливайте все патчи на программное обеспечение от Microsoft. Не посещайте страницы с warez'ом и crack'ами. Используйте альтернативные веб-броузеры, лучший(платный) вариант это Opera.
PM MAIL WWW ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1304 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.