За последние 24 часа нас посетили 16566 программистов и 1681 робот. Сейчас ищут 966 программистов ...

События "открыл страницы" и "все загружено&qu

Тема в разделе "JavaScript и AJAX", создана пользователем qwert_ukg, 7 июн 2011.

  1. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    Всем привет!
    Хочу спросить, есть ли такое событие которое вызывается при начале загрузки страницы, то есть сразу же после открытия вкладки браузера?
    И второе, есть ли такое событие которое вызывается при полной загрузке страницы, когда весь HTML загружен и все элементы каторые подгружались AJAX'ом загружены в DOM?
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
  3. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    как определить загрузились все элементы из аякса?
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    qwert_ukg

    У джекверивского аякса есть метод onSuccess

    А вообще - если подумать - как по твоему это должно работать? Откуда документ должен узнать, что в нем есть элементы загружаемые аяксом? :)
     
  5. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    не уверен, но тут можно просто запустить какуюто функцию в head страницы. она быстрее всего будет "найдена". хотя костыль.

    вообщето это $(document).ready(function(){}) - jquery
    onLoad - натив js.
    но что касается
    если есть динамическая подгрузка, например, при прокручивании страницы вниз добавляется еще кусок текста - то такое вряд ли можно отловить, так как до это динамической подгрузки страница является "законченно", то есть полностью загруженной и сформированной.
     
  6. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    такой подгрузки нет, но есть
    $(document).ready(function(){ загруска элементов в массив })
    как отследить что все из аякса пришло?
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    это уже манипуляции после полной загрузки документа.

    у метода $.post() вызывается анонимная функция, если все прошло удачно. это и означает, что "все из аякса пришло".
     
  8. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    чтобы было понятно:
    [js]$(document).ready(function(){
    n = $("#npp").val();
    $('.search').val("")

    //êýø äëÿ ñòðàíèö
    function get_page(query2){


    if (typeof(cache2[query2]) !== 'undefined'){
    $("#price").html(cache2[query2]);
    h_light();

    }
    else {
    $.ajax({
    url: "http://zamanpharm.kz/dub/templates/bt_okto/pages.php",
    dataType: "html",
    type: "GET",
    data: {page:query2, npp:n},
    success: function(html){
    cache2[query2] = html;
    $("#price").html(cache2[query2]);
    h_light();
    }
    });
    }

    }
    get_page("n0");
    $('#zakaz').load("http://zamanpharm.kz/dub/templates/bt_okto/zak.php");

    function get_cache(query2){
    $.ajax({
    url: "http://zamanpharm.kz/dub/templates/bt_okto/pages.php",
    dataType: "html",
    type: "GET",
    data: {page:query2, npp:n},
    success: function(html){
    cache2[query2] = html;
    h_light();

    }
    });
    }

    for(x=1; x<10; x++){

    var query2="n"+(x*500);
    //alert(query2);
    get_cache(query2)

    }[/js]
    хочу сделать индикатор загрузки страници, чтобы пока грузится функционал не работал и отображался какойнибуть гиф
     
  9. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    что ничего не понятно)

    ставь изначально, например, свойство display:none в какомто диве. после того как страница вот та:
    get_page("n0");

    загружена, изменяй это свойство на display:block. в чем проблема?
     
  10. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    да вот и я не знаю в чем)
    http://zamanpharm.kz/dub/templates/bt_okto/23!!!.php
    [css].hidden {
    display: none;
    }
    #load {
    width: 100px;
    height: 100px;
    background-color:red;
    position: fixed;
    z-index: 15;
    left:50%;
    top:50%;
    }[/css]
    HTML:
    1. <div id='load'></div>
    [js]for(x=1; x<10; x++){

    var query2="n"+(x*500);
    //alert(query2);
    get_cache(query2)

    }
    $("#load").toggleClass("hidden");[/js]
    класс хайден сразу назначается элементу див, тот даже отобразиться не успевает.
    а дело в том что саксес у аякса происходит тогда когда ответ все ништяк на серваке и ответ НАЧЕНАЕТ приходить, а сколько он загружается это уже другой вопрос
    пысы
    если есть фаербаг - посмотри в консоли сколько идут элементы из аякса
     
  11. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    это неправильный подход. зачем тупо всю страницу грузить аяксом? модно, круто, но не практично.

    посмотри, может чтото выйдет с ajaxComplete() или ajaxSuccess(). Сам не пробовал, но может они "улавливают" окончание загрузки. Или еще вариант - заново попробовать запустить событие ready(), уже внутри функции, когда аякс запрос успешно завершен, вызвать событие ready(). Вдруг повторный вызов будет "ждать" когда вся эта шняга загрузится :)
     
  12. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    если пи про первые 500 строк, то это мне посоветовали и я решил попробовать, не знаю в чем прикол но понту никакова, раньше грузилось на пхп. А если про загрузку остальных строк таблицы, то это кэш - для быстрого переключени по страницам.
    ajaxComplete() и ajaxSuccess() таже шкняга - сразуже при удачном ответе сервака, а вот с ready() стоит подумать, вообще с функциями документа или окна... чето не допер сразу
    Спасибо!
     
  13. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    да не правильно это. на пхп сформировал весь этот список и вытолкнул на вывод. все быстро и просто. разве что можно придумать фичу, что выводить не 500 строк, а скажем 100. а внизу кнопка "показать еще", как в поиске гугла. или вешать на событие, когда страница прокручена впритык вниз, то автоматом еще подгружаем 100 строк. в таком подходе плюс в том, что если юзер вдруг зайдет не на ту страницу (эту в данном случае) то он не ждет загрузки всего, а получает только 100 строк. если нужно еще - он жмет на нужную кнопку или прокручивает вниз.