[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[OT - javascrpt] attivare un div inserito dinamicamente.



Ciao Raga,

scusate per questo OT, ma siete gli unici che conosco, che potrebbero
darmi una risposta.

ho fatto uno script di ordinamento di una tabella caricata da un SQL.

Lo scopo sarebbe quello di evitare di richiedere un nuovo set di dati
diversamente ordinato al server SQL (mariaDB nello specifico), ho
voluto, quindi, provare a fare l'ordinamento direttamente lato client
con uno script js, va detto che richiedere i dati ordinati al server
sarebbe molto più veloce, per riordinare circa 1800 elementi, ci mette
un minuto secco.

proprio per ovviare al fatto che rimane bloccato il browser per tutto
il tempo che viene eseguito l'ordinamento, ho voluto inibire la
pagina, sovrapponendo un div con il classico gif di attesa...

questo div lo aggancio in modo dinamico al body, all'inizio
dell'ordinamento, e poi lo cancello al termine...

o almeno così vorrei che fosse, invece mi trovo nella situazione che
fino al termine dell'ordinamento non appare la pagina sovrapposta di
inibizione al sito, e naturalmente al termine viene messa e poi
tolta...

nella console del browser vedo che le varie parti di codice vengono
eseguite quando dovrebbero, allora perché non appare la pagina di
attesa durante l'ordinamento?

a seguire il codice del mio script, naturalmente epurato di tutta la
parte non necessaria dell'ordinamento:

function wait_page(status){
    console.log("Status di wait: " + status);
    if (status=="start"){
        console.log("Eseguo la procedura di blocco");
        var elem = document.createElement('div');
        elem.setAttribute('id', 'wait_page')
        elem.style.cssText = " position: absolute; left: 0px; top:
0px; width: 100%; height: 100%; opacity: 0.3; z-index: 100;
background-image: url(../images/processing.gif);
background-position-x:  50%; background-position-y:  50%;
background-repeat:  no-repeat;";
document.body.appendChild(elem);
    }
    else if (status=="stop"){
        console.log("Eseguo la procedura di sblocco");
        var elem = document.getElementById('wait_page');
        elem.parentNode.removeChild(elem);
    }
}

function sortTable(TableName, Column, Type, dir) {

    [...]
    console.log("BLocco la pagina.");
    wait_page("start");
    console.log("Pagina bloccata");

    // Eseguo l'ordinamento.

    console.log("SbLocco la pagina.");
    wait_page("stop");
    console.log("Pagina sbloccata");
}

questo è quello che vedo in console:

BLocco la pagina.
Status di wait: start
Eseguo la procedura di blocco
Pagina bloccata
Righe da ordinare: 1382
[1380] Sto eseguendo un ordinamento sulla colonna "Numero"
SbLocco la pagina.
Status di wait: stop
Eseguo la procedura di sblocco
Pagina sbloccata
[Violation] 'click' handler took 62784ms


cosa mi sto perdendo (a parte che non sono un programmatore js di professione?)

Grazie, e buone vacanze a chi le fa (come il sottoscritto).

Byez
-- 
Gollum1 - http://www.gollumone.it
Tesssssoro, dov'é il mio tessssoro...


Reply to: