Avatar billede jens_k Nybegynder
30. april 2003 - 01:16 Der er 10 kommentarer og
1 løsning

Refresh DIV

Hej

Jeg har en side med en masse DIV´s.

De har f.eks følgende ID´s:

DIV1
DIV2
DIV3
DIV4
DIV5

Kan man via et JavaScript nøjes med at refreshe alt det data som f.eks er i DIV3 uden de andre bliver refreshet.

Jens K
Avatar billede =maddog= Nybegynder
30. april 2003 - 01:36 #1
Hej Jens,
Før vi kommer til at tale forbi hinanden, skal vi lige have på det rene:
Hvorfor ændrer indholdet sig i den div? Altså hvordan modtager den data (uden at blive refresh'ed)?
Avatar billede jens_k Nybegynder
30. april 2003 - 03:26 #2
Det skal egentlig fungere som en Iframe, så den bliver refreset via et ASP Script.

Så spørger du sikkert "Jamen hvorfor du så ikke bare iFrame ?"

Godt spørgsmål der ! ;)

Det er fordi iFrames ikke fungere på en Mac med den nyeste Internet Explore til Mac.

Kan det lade sig gøre at lave noget i et JavaScript som har samme funktion som Iframes ?

Jens K
Avatar billede =maddog= Nybegynder
30. april 2003 - 03:38 #3
Tjoe. Det kan det vel godt, men jeg er bange for at du får endnu dårligere kompatibilitet ud af det. Det kræver brug af ActiveX komponenter, fordi vi skal lade klienten selvstændigt bede om data fra nettet uden om sikkerheds-modellen.
Sagt på kort dansk. En Iframe (og en frame) opfører sig langt hen af vejen som et vindue og de har en sikkerhedsmodel der gør vi har lov til at hente data ind i dem. Det har scripts kun hvis brugeren har slået ActiveX komponenter til.

Vi kan godt gå igang med det, men det bedste ville nok være at lave to næsten identiske sider en med iframes og en med divs, lave et browser-tjeck - hvis brugeren er på en Mac så giv ham/hende en venlig alert og fortæl ham/hende at de vil blive redirected til en side der muligvis virker. På den side kan du anbringe en lille knap med pop-up der hedder "Trouble-Shoot" og forklare at de kan slå ActiveX til.

Det kører jo serverside, så du kan i grunden redirecte til den samme side med &mac=true i url'en. Det er i så fald bare et script og en/flere divs der skal ændres. Ikke det store arbejde.

Hvad siger du til det? Er det for meget hyr?
Avatar billede jens_k Nybegynder
30. april 2003 - 03:54 #4
Nej, men jeg ved ikke nok om ActiveX til at lave sådan noget, så skal jo have noget hjælp fra dig.

Vil du hjælpe mig med det ?

Jens K
Avatar billede =maddog= Nybegynder
30. april 2003 - 04:04 #5
k.
Først og fremmest skal du have noget kode til at lave en HTTP request. Det er en del kode. Det kommer her. Bemærk at jeg ikke selv har skrevet det, så jeg vil sætte pris på at du bevarer den øverste comment.
// from webfx.eae.net/dhtml/xmlextras/
// Determine the prefix or throw Error
function getXmlHttpPrefix() {
    if (getXmlHttpPrefix.prefix)
        return getXmlHttpPrefix.prefix;
   
    var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
    var o;
    for (var i = 0; i < prefixes.length; i++) {
        try {
            // try to create the objects
            o = new ActiveXObject(prefixes[i] + ".XmlHttp");
            return getXmlHttpPrefix.prefix = prefixes[i];
        }
        catch (ex) {};
    }
   
    throw new Error("Could not find an installed XML parser");
}

// XmlHttp factory
function XmlHttp() {}

XmlHttp.create = function () {
    try {
        if (window.XMLHttpRequest) {
            var req = new XMLHttpRequest();
           
            // some versions of Moz do not support the readyState property
            // and the onreadystate event so we patch it!
            if (req.readyState == null) {
                req.readyState = 1;
                req.addEventListener("load", function () {
                    req.readyState = 4;
                    if (typeof req.onreadystatechange == "function")
                        req.onreadystatechange();
                }, false);
            }
           
            return req;
        }
        if (window.ActiveXObject) {
            return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
        }
    }
    catch (ex) {}
    // fell through
    throw new Error("Your browser does not support XmlHttp objects");
};
Avatar billede =maddog= Nybegynder
30. april 2003 - 04:19 #6
Her er så resten. Jeg har sat kommenteringer ind. Håber du kan se hvordan det hænger sammen. Ellers må du lige give lyd


// En timer så vi kan stoppe på kommando og en URL til fejl side.
var errorPage="errorPage.asp"
var timer=null;

// Her opretter vi forbindelse eller sender viderer til fejlsiden
function connect(sUri) {
    try {
      var xmlHttp = XmlHttp.create();
    } catch(e) {
          location.href = errorPage+"?reason=no_http";
    }
  var async = false;
  xmlHttp.open("GET", sUri, async);
  xmlHttp.send(null);
  // vi kalder her en funktion til at opdatere vores DIV med det vi har hentet
  reloadDIV(xmlHttp.responseText); // responseText : String
}
// Vores funktion til at opdatere DIV'en, her med id="theDIV"
function reloadDIV(newHTML) {
    var DIV;
    if (document.all) {
      DIV = document.all["theDIV"];
    } else if (document.getElementById) {
        DIV = document.getElementById("theDIV");
    } else {
          location.href=errorPage+"?reason=not_compatible"; // or some other error page
    }
    DIV.innerHTML = newHTML;
}
// Vi starter en timer, der henter med 1000 millisekunders interval
function startConnection() {
    if (!timer)
      timer = window.setInterval("connect('http://www.din_URL_til_DIV_feeder.dk')",1000);
}
// Her stopper vi igen
function stopConnection() {
    if (timer)
      timer = null;
}

.....
nede i <body> (endelig hold de store scripts i <head>)
.....

<!-- En div. sikkert med en masse fede styles ;) -->
<div id="theDIV"></div>


Bemærk at i en div må du IKKE have <html>, <head>, <style> og <body> (bl.a).
Avatar billede =maddog= Nybegynder
30. april 2003 - 04:36 #7
stop funktionen virker ikke (og har lige crashed min computer med alert's - jeg kommer til at høre for det her i morgen).
Ellers ser det ud til at virke fint.
Avatar billede =maddog= Nybegynder
30. april 2003 - 04:39 #8
function stopConnection() {
    if (timer)
      window.clearInterval(timer);
      timer = null;
}
Avatar billede =maddog= Nybegynder
02. maj 2003 - 17:21 #9
nu er der gået et par dage....
virker det?
Avatar billede jens_k Nybegynder
10. juni 2004 - 03:33 #10
Lav lige et svar. Så får du point !
Avatar billede jens_k Nybegynder
17. september 2004 - 20:11 #11
Nå, så lukker jeg spørgsmålet.

Mvh

Jens K
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester