Avatar billede nino Nybegynder
01. juli 2002 - 10:38 Der er 37 kommentarer og
1 løsning

opdatere en del af en side

hvordan kan man opdatere en del af en side? f.eks en kolonne i en tabel eller en dropdown ? ikke noget med refresh...den skal gøre det uden at hele siden opdatere en gang hver 15 sekund
Avatar billede monstermand Nybegynder
01. juli 2002 - 10:41 #1
kan man det?
Avatar billede kasseper Nybegynder
01. juli 2002 - 10:45 #2
Det kommer an på om det der skal fyldes i er fra serveren eller alle data findes client side...!
Avatar billede kasseper Nybegynder
01. juli 2002 - 10:50 #3
Man kan alternative lave en skjult frame/iframe, hvor man henter data fra serveren også loader det ind i sin tabel, eller drop down eller noget, så ser man ikke reloadet...!
Avatar billede =maddog= Nybegynder
01. juli 2002 - 11:00 #4
Det kan du godt, men det bliver rimelig langhåret. skal den opdateres fra en url? det gætter jeg ligesom på ellers er det ret meningsløst.
Denne hersens funktion henter en streng fra en URL via http

function readFile(url) {
  var req;
  if (document.all){
    req = new ActiveXObject("Microsoft.XMLHTTP");
  } else if (document.getElementById && !document.all){
    req = new XMLHttpRequest();
  } else {
    return false;
  }
  req.open("GET",url,false);
  req.send(null);
  return req.responseText;
}

Den udbygger vi så
timer= 0;
refresh = function() {}
refresh.start = function() {
document.getElementById('dinTR').innerHTML = readFile('dinurl.asp');
timer = window.setTimeout(refresh.start, 15000); //15 ms
}
refresh.stop = function() {
window.clearTimeout(timer); timer = 0;
}

Du kan så give det element du vil 'refreshe' id='dinTR' og starte funktionen med
refresh.start();
og slutte igen men
refresh.stop();

Det hele forklarer vist sig selv.
Avatar billede =maddog= Nybegynder
01. juli 2002 - 11:03 #5
refresh = function() {}
skal selvfølgelig være
function refresh() {}
for at starte factoryen op. resten er vist ok. har ikke prøvekørt det.
Avatar billede kasseper Nybegynder
01. juli 2002 - 11:04 #6
hmmmm. så skal man altså hente en ActiveX ?
Avatar billede =maddog= Nybegynder
01. juli 2002 - 11:11 #7
ActiveX er lokal kompileret kode. Man behøver ikke hente det, men enkelte har slået det fra p.g.a. sikkerhed. Det skal man lige tage højde for.
Til gengæld duer det super duper bravo i NS6 (for hvad det er værd).
Avatar billede kasseper Nybegynder
01. juli 2002 - 11:14 #8
Øhhhh, det er vist kun Microsoft's activeX'ere der er ikke skal hentes.
Ellers skal man jo instl. komponentet første gang siden vises...
Men at det virker i NS6 er da fint..!
Avatar billede =maddog= Nybegynder
01. juli 2002 - 11:31 #9
Det er rigtigt nok, men der er ikke nogen grund til at anvende XML-parsere når det skal hentes som plain text. (Jeg regner med at du mener MSXML2.XmlHttp MSXML.XmlHttp o.s.v.).
nino> jeg sagde godt nok at det blev langhåret. det sidste her er rimelig akademisk og du behøver ikke tage megen hensyn til det.
Avatar billede kasseper Nybegynder
01. juli 2002 - 11:41 #10
Jeg mener bare at custom ActiveX komponenter ikke er lokale, altså skal de hentes fra sitet, som man forsøger at loade.
Spørgsmålet er så bare om din løsning er lidt overkill, når det bare drejer sig om at få hentet noget data via http, netop plain text.
<iframe name="test" src="about:blank" style="visibility: hidden">
<script>
function reload()
{
test.src = "dinurl.asp";
setTimeout(reload, 15000);
}
reload();
</script>

så har du den samme information som din metode klare, uden specielle sikkerheds spørgsmål...
Bare en tanke.
Avatar billede =maddog= Nybegynder
01. juli 2002 - 11:46 #11
jamen det er rigtigt. ActiveX komponenter er ALTID lokale og ALDRIG en del af browseren (p.t.)
.. An interesting thing to note is that because an ActiveX object is compiled code on the client machine (Note: not the client Web browser) ..
iframe er en mulighed, men det virker som om det ikke er på tale.
Avatar billede kasseper Nybegynder
01. juli 2002 - 11:51 #12
Jeg mener bare at det er tit at man skal download og instl. et ActiveX komponent, når dette benyttes på siden. Jeg ved ikke om det er et citat du har pastet ind, hertil kan jeg kun sige JA.
det er kompileret kode man hanter ned fra nettet og instl. på sin MASKINE ikke som en del af browseren, netop derfor hat mange brugt ordet plug-in om AcitveX objecter.
Og hvornår var det lige at iframe løsningen blev forkastet.
Avatar billede kasseper Nybegynder
01. juli 2002 - 11:52 #13
hanter > henter
Avatar billede =maddog= Nybegynder
01. juli 2002 - 11:53 #14
nu nævner nino f.x. en drop-down. hvordan vil du få en iframe ind i en dropdown?
Avatar billede kasseper Nybegynder
01. juli 2002 - 11:55 #15
Det er da ikke noget problem at opdatere en dropdown via javascript.
Man kan forestille sig at iframen loader et script der opdatere iframens.parent dropdown....
Avatar billede =maddog= Nybegynder
01. juli 2002 - 12:03 #16
via en off-screen iframe? det kan man også godt.
Avatar billede kasseper Nybegynder
01. juli 2002 - 12:06 #17
Ikke forstået ?
Avatar billede =maddog= Nybegynder
01. juli 2002 - 12:19 #18
<iframe width="0" height="0" style="postiton:absolute;top:-10;left:-10;" id="offscreen">

og så loade noget ind i den der har en onload handler, der opdaterer <select>. ellers fatter jeg ikke hvad du mener.
Avatar billede kasseper Nybegynder
01. juli 2002 - 12:34 #19
hmmmm.
OK nu kommer der lige en lidt længere smører :

Man kan lave en iframe sådan :
<iframe name="test" src="about:blank" style="visibility: hidden">
Den kan ikke ses på skærmen pga. sin style.
Man har feks. en dropdown :
<select id="minselect">
<option>hej hej
</select>
Man laver så et script sådan :
<script>
function reload()
{
test.src = "dinurl.asp";
setTimeout(reload, 15000);
}
reload();
</script>
Der søger for at reloade siden hvert 15 sekund. Så langt er du med....
dinurl.asp har så f.eks. følge kode :

<script>
newOpt = document.createElement("OPTION");
newOpt.value = 'et eller andet'
newOpt.text = <% Reposnse.write('dette er en test') %>;
parent.minselect.add(newOpt,1);
</script>

Det skulle virke hvis altså at frame hirakiet er som jeg antog....!
Avatar billede kasseper Nybegynder
01. juli 2002 - 12:35 #20
Reposnse >> Response
Avatar billede =maddog= Nybegynder
01. juli 2002 - 12:40 #21
der er et par hakker i koden men jeg ser klart ideen. ANYHOW, så er jeg RIMELIG sikker på at det ActiveX objekt der skal anvendes er en delmængde af browser pakken.
Vi kan jo lave en test, hvis du ikke har downloaded komponenten skulle du ikke kunne se følgende side
http://www.mycgiserver.com/~maddog/test.html
Avatar billede nino Nybegynder
01. juli 2002 - 12:43 #22
kasseper-> *host host* er det her ik javascript forumet? :P
Avatar billede kasseper Nybegynder
01. juli 2002 - 12:43 #23
Yeps det virker, men sådan er det jo med microsoft, de vedlægger en hulens masse ActiveX objecter der'shippes' med når du instl. IE. De installeres ikke i browseren men på maskinen. ' So to say.. '.
Og OK hakker er der nok, men det virker uden diverse krumspring.
BTW. så er det den foretrukne ide til at lave eksempelvis chats.
Avatar billede kasseper Nybegynder
01. juli 2002 - 12:44 #24
nino >> Jo er det ikke det !!!!!????!!!
Avatar billede =maddog= Nybegynder
01. juli 2002 - 12:50 #25
kasseper: der er sandt. men som sagt har NS en anden komponent der virker aldeles bravo. Hvor er det den download kommer fra? Opera brugere?
Med hakker mener jeg at koden ikke ser ud til at virke i NS. Jeg mener ikke man bare kan skrive parent.minselect da det ikke er en korrekt indexering, men jeg kan tage fejl.
Avatar billede =maddog= Nybegynder
01. juli 2002 - 12:54 #26
ok. jeg læser lige mine sidste posts og erkender jeg lyder en anelse brysk. Det er jeg ikke. Sværger. Men jeg kan ikke lide en ide bliver forkastet på forkert grundlag.
jeg synes faktisk godt om idéen med en off-screen iframe, hvis det kan opfylde kravet.
Avatar billede nino Nybegynder
01. juli 2002 - 12:56 #27
ok, maddogs virker....
Avatar billede nino Nybegynder
01. juli 2002 - 12:58 #28
kan godt lide dewt uden at bruge iframes.. :D
Avatar billede nino Nybegynder
01. juli 2002 - 12:58 #29
maddog->BTW, den drop down er jo næsten umulig at vælge noget i ?
Avatar billede =maddog= Nybegynder
01. juli 2002 - 12:59 #30
der skal lige en lille ændring ind
refresh.start = function() {
window.clearTimeout(timer);
document.getElementById('dinTR').innerHTML = readFile('dinurl.asp');
timer = window.setTimeout(refresh.start, 15000); //15 ms
}

ellers kan du komme til at starte flere på en gang.
refresh factory'en kan sagtens udbygges til flere funktioner hvis du vil.
Avatar billede =maddog= Nybegynder
01. juli 2002 - 13:01 #31
nino> ja. det skal gå tjep. men du kan stoppe den onfocus
<select onfocus="refresh.stop();" onblur="refresh.start();">
Avatar billede kasseper Nybegynder
01. juli 2002 - 13:11 #32
=maddog= > Mht. ActiveX objecter, så kender jeg ikke listen over objecter der medfølger i en browser instl. Men under normale omstændigheder er det jo sådan et indeholder en side en ActiveX skal brugeren verificere downloadet af objectet pga. sikkerhedsmæssige hensyn.
Mht. hakkerne, så var det bre for at ridse ideen op, når man laver x-browser løsninger har man jo typsik flere sektioner kode til diverse browsere....
nino > bare 'for the record' så er det jo bare et eksempel, med det asp kode, det har maddog jo også idet han referere til dinurl.asp....
nok om det go fornøjelse
Avatar billede nino Nybegynder
01. juli 2002 - 13:15 #33
er der en måde man kan få den til at opdatere den drop når filen viser f.eks.
<option>Haha</option>
<option>Huhu</option>
<option>Hihi</option>
? det står på en linie med det jeg har prøvet
Avatar billede kasseper Nybegynder
01. juli 2002 - 13:22 #34
Ok, ikke for at være en lyseslukker men det er en problemfyldt løsning du har valgt, sikkerhedsmæssigt er der et brist i Microsoft.XMLHTTP, og der kan være mange der har oplevet at det ikke virker i deres browser på trods af at det er IE. Læs f.eks. :

http://www.siteexperts.com/forums/viewConverse.asp?d_id=8036&Sort=0

søg på google :
http://www.google.com/search?q=Microsoft.XMLHTTP&ie=ISO-8859-1&hl=da&lr=

gav 1700 svar. Læs lidt af dem igennem, så du er på den sikre side...!
Avatar billede =maddog= Nybegynder
01. juli 2002 - 13:23 #35
hvordan vil du gerne have den opdateret. sådan som koden er p.t. kan du opdatere netop et html element. dette skal have id="dinTR".
<option id="dinTR">Haha</option>
du kan kun have et objekt med den id. Hvis du vil have andre skal enten generere html (altså nye options) og sætte id på <select> eller tilføje flere i refresh.start
document.getElementById('dinTR').innerHTML = readFile('dinurl.asp');
document.getElementById('huttelihut').innerHTML = readFile('dinurl.asp');
document.getElementById('bummelum').innerHTML = readFile('dinurl.asp');
.....
Avatar billede =maddog= Nybegynder
01. juli 2002 - 13:30 #36
kasseper> man kan ikke lave en kæft hvis man skulle tage højde for alle de huller der er i MS kode, men jeg bruger jo heller ikke MSXML.XmlHttp som er problemet i MS02-008 secbul. Det er rigtigt at det ikke virker i Linux, men de bruger alle sammen NS/Moz.
Avatar billede =maddog= Nybegynder
01. juli 2002 - 13:32 #37
men tak for reminderen. jeg fjerner MSXML fra min kode as soon as possible.
Avatar billede kasseper Nybegynder
01. juli 2002 - 13:39 #38
do as U like
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