Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: OnSckroll вниз до конца и запуск JavaScript. Кроссбраузерность

Сообщения:  [1-9] 

 
 автор: Valleri   (18.05.2011 в 15:51)   письмо автору
 
   для: Абырвалг   (18.05.2011 в 15:39)
 

Это спецом, что-бы вы человеком себя почувствовали, это раз
Это просто мышкой скопировано, это два

Только человек крутанет, увидит внизу пустоту и подумает конец странице, бросит сайт и уйдет и оставит вебмастера без денег, это три
Только в лисе, 3.1, не работает, а в ней на сайте 30%, это четыре.
Кроссбраузерности нет. Вам же писали pageYOffset

А так вещица путевая, полезная, главное на пользу всем людям.
Почти готово.

[поправлено модератором]

  Ответить  
 
 автор: Абырвалг   (18.05.2011 в 15:39)   письмо автору
 
   для: Valleri   (18.05.2011 в 15:09)
 

Конечно - "не то".

1. var x1 = document.body.scrollTop;
Во-первых, на момент определения этой переменной объекта document.body ещё не существует.
Во вторых, document.body.scrollTop - величина ПЕРЕМЕННАЯ. Нельзя её определить раз и навсегда.
Эту переменную можно определять только ПОСЛЕ формирования тела документа и определять её надо КАЖДЫЙ раз при изменении проскролленности страницы.

2. <div id="id1"><div>
Вы для этого контейнера иного места, кроме как между тегами <table> и <tr> не нашли? :-)))
-----

Мой вариант - он у Вас работает?
Уверен, что работает - при подводе скроллбара на 20 пикселей к нижнему его положению скрипт запускается и высота таблицы меняется.
Причём работает ВЕЗДЕ (в том числе и в FF).

Вам нужен другой скрипт, добавляющий какой-то html-код?
Держите:
<html> 
<head> 
<style> 
html, body {height: 100%} 
body {margin-bottom: 100px}
</style> 
<script> 
var DELTA = 20; 
var ok = 0;

function mF () 

var DB = document.body, x1 = DB.scrollTop;; 
if ((DB.scrollTop + DELTA) >= (DB.scrollHeight - DB.clientHeight))  
   { 
   document.getElementById ('id1').insertAdjacentHTML ('beforeEnd', ++ok + ' &#234;&#238;&#228; x1 = '  + x1 + ' scrollHeight = ' + DB.scrollHeight + '<br>');
   } 

</script> 
</head> 
<body onscroll="mF ()"> 

<div id="id1" style="margin-top: 1200px">&nbsp;</div>

</body> 
</html> 


PS. Я использовал здесь Ваш метод insertAdjacentHTML, который в FF как раз не работает.
Для справки - в FF работает insertBefore

[поправлено модератором]

  Ответить  
 
 автор: Valleri   (18.05.2011 в 15:09)   письмо автору
 
   для: Абырвалг   (18.05.2011 в 14:39)
 

<html> 
<head> 
<style> 
html, body {height: 100%} 
#mTBL {background-color: lime; width: 90%; height: 200%} 
</style> 
<script> 
var T = 200; 
var DELTA = 20; //выбранный Вами "запас недопроскроленности"- целое неотрицательное число 
ok=1;
var x1 = document.body.scrollTop ;

function mF () 

var DB = document.body; 
if ((DB.scrollTop + DELTA) >= (DB.scrollHeight - DB.clientHeight))  
   { 
ok++;
   //запуск нужного Вам скрипта. Здесь реализовано простое увеличение высоты таблицы
document.getElementById('id1').insertAdjacentHTML("beforeEnd", ok +"  код   x1  =   "  +x1+ " clientHeight =   "  +document.body.clientHeight+ "<br>");
   T += 100; 
   document.getElementById ('mTBL').style.height = T + '%'; 
   } 

</script> 
</head> 
<body onscroll="mF ()"> 
<table id="mTBL" cellpadding="0" cellspacing="0"> 
<div id="id1"><div>
<tr><td>&nbsp;</td></tr> 
</table> 
</body> 
</html>


Чего то не то. Добавка для оживления жирная
Возможно нужно дополнительное условие.
Если последний элемент стал виден пользователю, то запуск.
Или Если последний элемент может увидеть пользователь, то запуск.

А в лисе не работает

  Ответить  
 
 автор: Абырвалг   (18.05.2011 в 14:39)   письмо автору
 
   для: Valleri   (18.05.2011 в 14:08)
 

<html>
<head>
<style>
html, body {height: 100%}
#mTBL {background-color: lime; width: 90%; height: 200%}
</style>
<script>
var T = 200;
var DELTA = 20; //выбранный Вами "запас недопроскроленности"- целое неотрицательное число

function mF ()
{
var DB = document.body;
if ((DB.scrollTop + DELTA) >= (DB.scrollHeight - DB.clientHeight)) 
   {
   //запуск нужного Вам скрипта. Здесь реализовано простое увеличение высоты таблицы
   T += 100;
   document.getElementById ('mTBL').style.height = T + '%';
   }
}
</script>
</head>
<body onscroll="mF ()">

<table id="mTBL"><tr><td>&nbsp;</td></tr></table>

</body>
</html>


PS. доктайп - это тег, определяющий тип документа и соответствие его стандарту для этого типа. Если прописывается, то первым на странице (ещё до <html>). Например, так: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  Ответить  
 
 автор: Valleri   (18.05.2011 в 14:08)   письмо автору
 
   для: Абырвалг   (18.05.2011 в 14:00)
 

доктайп, можно спросить, что это?
мне известны такие слова pageYOffset
Хочется как тут http://vkontakte.ru/search
Вы человек сердечный, может подскажите

  Ответить  
 
 автор: Абырвалг   (18.05.2011 в 14:00)   письмо автору
 
   для: Valleri   (18.05.2011 в 12:39)
 

Да нет, в большинстве - как раз одинаково.

var SH = document.body.scrollHeight; //высота страницы
var CH = document.body.clientHeight; //высота окна
document.body.scrollTop;             //текущее положение скролла


SH и CH - фиксированы
document.body.scrollTop - меняется в зависимости от проскролленности страницы: от нуля до значения разности SH и CH.

Соответственно, код для искомого запуска скрипта: if (document.body.scrollTop >= (SH - CH)) alert ('Запуск');


PS. доктайп указывать не надо вовсе в данном случае.

  Ответить  
 
 автор: Valleri   (18.05.2011 в 12:39)   письмо автору
 
   для: deimand   (18.05.2011 в 12:18)
 

Так как сделать.
В разных браузерах- по разному.

  Ответить  
 
 автор: deimand   (18.05.2011 в 12:18)   письмо автору
 
   для: Valleri   (18.05.2011 в 08:06)
 

Посчитайте высоту тела документа, снимите координаты позиции скролла. Если разница составляет менее n пикселей - запуск.

  Ответить  
 
 автор: Valleri   (18.05.2011 в 08:06)   письмо автору
 
 

Как сделать запуск JavaScript, при вертикальной прокрутке вниз до конца обеспечив при этом запуск JavaScript в любом или почти в любом браузере.
Кроссбраузерность

  Ответить  

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования