Avatar billede hkb-x Nybegynder
07. december 2005 - 14:56 Der er 19 kommentarer og
1 løsning

load php script istedet for billede

Jeg bruger javascript til at vise hvor mange mails jeg har sendt ud...

Princippet er at et javascript åbner et php dokument der så sende 1 mail... det gøres så med alle de mails der sendes... jeg har strikket det sammen så det åbner php dokumentet som et billede... hvilket også virker fint i firefox... men IE fårker det op...

hvordan får jeg IE til at acceptere det?

//////////////// KODE ////////////////
emails = new Array("adr@email.dk", "a@b.cd", "email@domæne.dk");

i = -1;
nsImg = new Image();
tbts = 0;
starttid = new Date().getTime();

function preload() {
  img = (document.all) ? document.images["pimg"] : nsImg;   
  if (++i != 0 && document.all)
    tbts += Math.round(img.fileSize / 1024);
  pix = Math.round((500 / emails.length) * i);
  diff = (((new Date().getTime() - starttid) / (i / emails.length * 100)) * (100 - (i / emails.length * 100))) / 60000;
  document.getElementById("plpro").innerHTML = Math.ceil(diff) + " min.";
  document.getElementById("pl").innerHTML =  i + " ud af " + emails.length + " mails sendt";
  document.getElementById("plbar").style.width = pix;
  if (i >= emails.length)
    efterPreload();
  else {
    img.src = emails[i];
    if (!document.all)
      tjek();
  }
}

function tjek() {
  if (nsImg.complete)
    preload();
  else
    setTimeout(tjek, 100);
}

function efterPreload() {
  //Her defineres, hvad der skal ske, efter billederne er loadet
  //Hvis siden skal skifte, fjerner du bare de to slashes herunder:
  //self.location.href = "din_side.html";
}

/////////////////////////////////////////////////////
Avatar billede roenving Novice
08. december 2005 - 00:58 #1
Hvad gør den da ?-)
Avatar billede hkb-x Nybegynder
08. december 2005 - 09:38 #2
ie afvikler bare ikke scriptet. den stopper når den når til img.src = emails[i];
Avatar billede hkb-x Nybegynder
08. december 2005 - 09:38 #3
Avatar billede hkb-x Nybegynder
08. december 2005 - 09:40 #4
prøv at åbne den side i firefox og ie...
Avatar billede roenving Novice
08. december 2005 - 14:17 #5
Der forekommer måske aldrig en load-event på billedet, hvad returnerer du fra dit script serverside ?-)
Avatar billede hkb-x Nybegynder
08. december 2005 - 14:37 #6
huh... returnerer fra hvad?
Avatar billede roenving Novice
08. december 2005 - 14:43 #7
Du sender til "sendemail.hkb?e=" + emails[i], hvis det ikke returnerer et billede, vil load-eventet jo aldrig forekomme ...
Avatar billede hkb-x Nybegynder
08. december 2005 - 14:49 #8
hmm... hvron kan jeg fikse det?
Avatar billede hkb-x Nybegynder
08. december 2005 - 14:52 #9
hmm... har fået php til at lave et billede og har lagt mailkoden der... og så elsker IE det... men nu kan firefox ikke lide det...
Avatar billede roenving Novice
08. december 2005 - 15:11 #10
Tjah, hvis du kigger i javascript-konsollet, vil du se, at den giver op på grund af for meget rekursion, og da der er to funktioner, der gensidigt kalder hinanden, kan jeg da godt forstå det !-)

Så tilføj en variabel mere:

i = -1;
nsImg = new Image();
tbts = 0;
starttid = new Date().getTime();
initiated = false;

-- og ændr slutningen af preload-funktionen:

  if (i >= emails.length){
    clearInterval(initiated);
    efterPreload();
  }else {
    img.src = emails[i];
    if (!document.all && !initiated)
      tjek();
  }

-- og tilføj i tjek-functionen:

function tjek() {
  if (nsImg.complete)
    preload();
  else
    initiated = setInterval(tjek, 100);
}

-- absolut utestet !-)
Avatar billede roenving Novice
08. december 2005 - 15:13 #11
Hrm, der skal vist lige testes en gang mere:

function tjek() {
  if (nsImg.complete)
    preload();
  else if(!initiated)
    initiated = setInterval(tjek, 100);
}
Avatar billede hkb-x Nybegynder
08. december 2005 - 15:17 #12
siger der er en fejl i linie 32 ... altså ved; clearInterval(initiated);

hele koden:

function preload() {
  img = (document.all) ? document.images["pimg"] : nsImg;   
  if (++i != 0 && document.all)
    tbts += Math.round(img.fileSize / 1024);
  pix = Math.round((500 / emails.length) * i);
  diff = (((new Date().getTime() - starttid) / (i / emails.length * 100)) * (100 - (i / emails.length * 100))) / 60000;
  if(i > 100) { document.getElementById("plpro").innerHTML = "<b>" + Math.ceil(diff) + " min.</b>"; } else {  document.getElementById("plpro").innerHTML = "<div style='color: #cccccc;'>Beregner tid (" + i + "%)</div>"; }
  document.getElementById("pl").innerHTML =  i + " ud af " + emails.length + " mails sendt";
  document.getElementById("plbar").style.width = pix;
  document.title = "Sending mail: " + Math.ceil(diff) + " min.    ";
  if (i >= emails.length)
    clearInterval(initiated);
    efterPreload();
  else {
    img.src = "sendemail.hkb?e=" + emails[i];
    if (!document.all && !initiated)
      tjek();
  }
}

function tjek() {
  if (nsImg.complete)
    preload();
  else if(!initiated)
    initiated = setInterval(tjek, 100);
}
Avatar billede roenving Novice
08. december 2005 - 15:30 #13
Bemærk de to tuborger, der er sat ind:

  if (i >= emails.length){
    clearInterval(initiated);
    efterPreload();
  }else {
Avatar billede hkb-x Nybegynder
08. december 2005 - 15:37 #14
ok... hjalp meget på hastigheden i IE... men firefox fårker stadig... den flyver op på 499 med det samme og stopper der!
Avatar billede roenving Novice
08. december 2005 - 15:44 #15
Hrm, den kan jeg ikke lige gennemskue ...
Avatar billede hkb-x Nybegynder
08. december 2005 - 15:49 #16
det er som om den ikke kan lide de billed koder jeg har lagt i billedscriptet.....
Avatar billede hkb-x Nybegynder
08. december 2005 - 15:51 #17
nah... gør ingen forskel når jeg fjerner dem...
Avatar billede hkb-x Nybegynder
13. december 2005 - 15:13 #18
arrg, ka ik knække den.. nå... men tak for hjælpen roenving...

skriv svar for point..
Avatar billede roenving Novice
14. december 2005 - 17:53 #19
Oki '-)
Avatar billede roenving Novice
15. december 2005 - 16:06 #20
-- og tak for point ;~}
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