Добавление загрузочного GIF в простой скрипт - PullRequest
2 голосов
/ 04 мая 2010

Я действительно новичок в Javascript, но у меня есть этот скрипт, который загружает содержимое URL, и все работает отлично. Я вызываю функцию plannerSpin с помощью метода onClick для кнопки, но как мне показать анимированный GIF, пока все это происходит?

var xmlHttp
function plannerSpin(str) {
    xmlHttp = GetXmlHttpObject()
    if (xmlHttp == null) {
        alert("Browser does not support HTTP Request")
        return
    }
    var url = "/recipes/planner/data"
    xmlHttp.onreadystatechange = stateChanged
    xmlHttp.open("GET", url, true)
    xmlHttp.send(null)
}
function stateChanged() {
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
        document.getElementById("recipe_planner_container").innerHTML = xmlHttp.responseText
    }
}
function GetXmlHttpObject() {
    var xmlHttp = null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    } catch (e) {
        // Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Есть много способов ... например: вы можете скрыть изображение:

<div id='loading' style='display:none'><img src='img.gif'></div>

и покажите его, как только вы запустите AJAX-запрос:

document.getElementById('loading').style.display = 'inline';

Затем вы снова скрываете изображение после завершения запроса:

if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"){
    document.getElementById('loading').style.display = 'none';
    document.getElementById("recipe_planner_container").innerHTML = xmlHttp.responseText;
}   

Или вы можете использовать jQuery, Prototype, Mootools или любую другую библиотеку JS, которую вы хотите.

Bye!

0 голосов
/ 04 мая 2010

Вы можете добавить gif загрузки в начале plannerSpin и удалить в функции stateChanged. Что-то вроде:

var img;
function plannerSpin(str) {
    img=document.createElement("img");
    img.src="image/path";
    //Here you can set some style for the image like an absolute position
    document.body.appendChild(img);
    ....
}


function stateChanged() {
    ...
    document.body.removeChild(img);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...