Avatar billede limemedia Nybegynder
19. april 2003 - 08:34 Der er 34 kommentarer og
1 løsning

ani gif stopper ved form upload

Jeg arbejder med en side hvor der potentielt kan forekomme større filer der skal uploades gennem en formular.

Det jeg gerne vil er, at vise der er "arbejde" igang og at man bør vente pænt - det gør jeg ved onSubmit at åbne et layer med teksten og en anigif hvor der "løber" en bar. Idéen er fanget fra speednames, prøv at søg efter et domæne.

Problemet er, at når formen submitter og layeret bliver vist, vises første frame fra anigiffen men ikke flere. Sætter jeg et delay ind via JS, kan jeg også sagtens få den til at køre, indtil formen submitter, så fryser min anigif.

Hvordan undgår jeg at anigif'en fryser ? eller hvordan kan jeg evt på en anden måde løse problemet ?

Et hurtigt eksempel kan ses herunder :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Untitled</title>

<style type="text/css">
<!--
    .msgDiv {
        font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
        font-size : 11px;
        line-height : 16px;
        color : #363636;
    }

    #msgDiv {
        position : absolute;
        visibility : hidden;
        z-index: 9;
    }
-->
</style>

<script language="JavaScript" type="text/javascript">
<!--
    op = (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) ? true: false;
    ns = (document.layers && !op) ? true : false;
    ie = (document.all && !op) ? true : false;
    dom = (document.getElementById || op) ? true : false;

    function showUpload() {
        var obj = (ns) ? document.layers.msgDiv : (ie) ? document.all.msgDiv : document.getElementById("msgDiv");
        if (ns) obj.visibility = "visible";
        else obj.style.visibility = "visible";
    }
//-->
</script>
</head>

<body>

<form action="uploadtest.php" method="post" enctype="multipart/form-data" name="test" id="test" onSubmit="showUpload();">
<input type="file" name="uploadfile"><br>
<input type="submit" name="submit" value="submit">
</form>


<div id="msgDiv" class="msgDiv">
Filen bliver uploadet, vent venligst ...<br>
<img src="upload.gif" width="400" height="20" alt="" border="0">
</div>

</body>
</html>


Test kan foretages på http://ljweb.biz/working/

/ Lars
Avatar billede erikjacobsen Ekspert
19. april 2003 - 09:23 #1
Virker fint lige nu i Konquerer browseren (Linux)
Avatar billede erikjacobsen Ekspert
19. april 2003 - 09:25 #2
Og i NS 6.2.3 (Linux)
Avatar billede limemedia Nybegynder
19. april 2003 - 09:34 #3
ja, så er minoriteterne jo dækket :) har selv kun testet i IE indtil videre
Avatar billede olebole Juniormester
19. april 2003 - 15:34 #4
<ole>

Jeg kan ikke se, det virker i NS6 - og det kommer da bag på mig, det overhovedet virker i _nogen_ browser  :)

Når du submitter en side, forlader du den øjeblikkeligt og din action-fil bliver loaded i browseren i stedet. Browseren viser dog først den nye side, når denne er renderet.

Du kan dog med PHP-funktionen flush() tvinge browseren til at printe ud til skærmen, før hele dokumentet er indlæst.
Skriv din 'progress-bar' i dit action-dokument og brug flush():
  http://www.php.net/manual/en/function.flush.php

Det andet _må_ ikke kunne lade sig gøre  ;o)
/mvh
</bole>
Avatar billede limemedia Nybegynder
19. april 2003 - 15:56 #5
ole > prøv at se speednames - det må kunne lade sig gøre :)

i php modtager den først filen når den ligget i temp dir på serveren, hvorfra vi kan spørge til dens temp filnavn. Dét holder ikke med flush. De snakker om man kan fra PHP5, men da den ikke er udkommet endnu, er det omsonst *g*

Ifølge et indlæg jeg har ved codewalkers findes der en anden metode - som er beskrevet på koreansk !
> How to find the code
> http://www.hellophp.com
> Beside the wizard in top, click first menu item far left
> In the emerging horisontal menu, click PHP
> Top entry, with the image stating upload - click that

I dette spørgsmål søgte jeg mere et stade mellem den side der afsender en fil og dén der modtager filen - hvor modtageren først udføres når filen er uploadet ...

/ LJ
Avatar billede olebole Juniormester
19. april 2003 - 16:08 #6
*LoooL* Jamen se nu, hvad der foregår på speednames, Lars .... det er jo præcist, hvad jeg foreslår: Du skal gøre det på den side, der ligger i din action. På speednames hedder filen 'chooseprocessinfo.asp'  ;o)

Du _kan_ ikke det andet. Hvis du tænker dig om, er jeg sikker på, du vil kunne se, jeg har ret  :)
/mvh
Avatar billede olebole Juniormester
19. april 2003 - 16:10 #7
Du kan fyre din upload-side ned i en iframe - så kan du blive på siden med animationen ... ellers ikke  :)
Avatar billede olebole Juniormester
19. april 2003 - 16:11 #8
Altså med noget:
  <form action="bla.php" method="post" target="dinIframesName">
Avatar billede erikjacobsen Ekspert
19. april 2003 - 16:17 #9
Så længe den uploader, så ser man den samme side som submitknappen
sidder og kukkelurer på - det er da logik for høns.

Så kan man også se en gif der vrider sig.
Avatar billede olebole Juniormester
19. april 2003 - 16:24 #10
En animeret gif stopper under alle omstændigheder ved sideskift under Win og MacOS. Derfor vil du aldrig kunne se en gif 'vride sig' efter en submit ...... det burde være logik for kodere (høns skal jeg ikke kunne udtale mig om)  ;o)

Der sker præcist det samme med:
  <a href="java script:alert('Hi')">TEST</a>
Den stopper også en animeret gif.

Det gør denne til gengæld ikke:
  <a href="#" onclick="alert('Hi'),return false">TEST</a>
Avatar billede erikjacobsen Ekspert
19. april 2003 - 16:29 #11
Det må være for længe siden jeg har brugt en IE til andet end at
slå fluer ihjel med... Det er da synd for alle de flotte animerede
reklamer for Viagra og andet godt.
Avatar billede olebole Juniormester
19. april 2003 - 16:37 #12
Det handler - som jeg vist også skrev - ikke om browseren, men om OS'et  ;o)

...og så skulle det naturligvis være et semikolon i:
  <a href="#" onclick="alert('Hi');return false">TEST</a>
Avatar billede erikjacobsen Ekspert
19. april 2003 - 16:42 #13
Ok, ok,...

  s/IE/Windows box/gm
Avatar billede olebole Juniormester
19. april 2003 - 16:52 #14
Forkert RexExp ........ browseren er ligegyldig. I NS stopper den også - og det sker også under MacOS. Mon ikke Linux er det eneste OS, det ikke sker under?
Avatar billede limemedia Nybegynder
19. april 2003 - 17:13 #15
drenge ;) i spammer min sørgelige mailbox :o)

olebole >> kigger man på netop Speednames, kan man se den første form submitter til chooseprocessinfo der netop igen indeholder en form der submittes... om der er én eller to er vel underordnet

En iframe er sjusk, så hellere den alm ventetid :)


erik >> man ser den samme side som submit knappen er på ja, men anigif'en stopper i dens rotation på den frame der var aktiv da submit blev aktiveret - dét er netop problemet
Avatar billede erikjacobsen Ekspert
19. april 2003 - 17:21 #16
Det forstår jeg, lj, på jeres levende beskrivelse af problemet.
Jeg må se at få fyret op under en Windows maskine for at se
fænomenet.

Java-applet? Al JavaScript stopper måske også? Hvad er den pause
du snakker om - er det at gif-en kører til pausen holder op, så submitter
den, og giffen standser?
Avatar billede limemedia Nybegynder
19. april 2003 - 17:32 #17
erik >> godtnok er jeg på vej til at blive datanom i Java - men appletter finder ikke vej til en webside administreret af mig... så hellere undvære featuren

Godnat drenge... vi snakkes engang mandag
Avatar billede olebole Juniormester
19. april 2003 - 17:33 #18
Lars, de submitter formen via JS og _derefter_ skifter de en klar gif ud med den animerede  ;o)
/mvh
Avatar billede olebole Juniormester
19. april 2003 - 17:34 #19
Du kan se det i body-tag'et ... det sker på onload-event'en  ;o)
Avatar billede erikjacobsen Ekspert
19. april 2003 - 19:38 #20
Det er noget ganske andet Speednames laver. De laver en søgning på
serveren, og vi uploader en fil. Vi kan ikke gentage deres metode.

Men ja, jeg fandt en afdanket computer der kunne hoste sig igennem
en opstart af Windows et eller andet... og sandminten --- minsandten ---
den der gif gik bare i stå. Tosset idé de der programmører har fundet
på. Der er jo onde tunger, der siger at animerede gifs blev opfundet
for at kunne lave bannerreklamer, og så - på det tidspunkt man har
bedst til at kigge på dem - nemlig når man venter på næste side,
så går de bare i stå. Ikke særligt gennemtænkt....syn's bette mig.
Avatar billede olebole Juniormester
19. april 2003 - 22:22 #21
Du kan stadig gøre det, hvis du submit'er mod en skjult iframe - eller en popup - og skifter en klar gif ud med animationen.
På onload i upload-dokumentet (i iframe'en) kan man så skifte tilbage igen og reset'e formen.

Den løsning, kan Lars dog ikke lide ... så deeeeeeeeeeet .........  :)
Avatar billede olebole Juniormester
19. april 2003 - 23:14 #22
Lars, du skylder ...  ;o)

<script type="text/JavaScript">
var prGrssBar, prGrssBarW, barPic, speed = 10;
function pI(s){return parseInt(s)}
function finishBar() {
    prGrssBar.innerHTML = (prGrssBar.innerHTML=="F\346rdigg\370r ...")? "" : "F\346rdigg\370r ...";
    setTimeout("finishBar()", 300);
}
function doBar(i) {
    if (i) prGrssBar.style.visibility = "visible";
    if (pI(barPic.offsetWidth)<prGrssBarW-speed) {
        barPic.style.width = pI(barPic.offsetWidth) + speed + "px";
        setTimeout("doBar()",70);
    } else {
        barPic.style.width = prGrssBarW + "px";
        prGrssBar.style.textAlign = "center";
        setTimeout("finishBar()", 150);
    }
}
window.onload = function() {
    prGrssBar = document.getElementById("barFrame");
    prGrssBarW = pI(prGrssBar.offsetWidth) - (pI(prGrssBar.style.borderWidth)*2);
    barPic = document.getElementById('bar');
}
</script>
<style type="text/css">
body {
    background-color: #c0c0c0;
}
#barFrame {
    width: 300px;
    height: 15px;
    border: inset #ffffff;
    font-family: tahoma, sans-serif;
    font-size: 10px;
    font-weight: bold;
    visibility: hidden;
}
</style>
<div id="barFrame" style="border:2px"><img src="blue.gif" height="13" width="1" id="bar"></div>
<form name="uplForm" enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>" method="post" onsubmit="doBar(true)">

Lav en 1*1 pixel gif med farven #000080 og kald den 'blue.gif'.
/mvh
Avatar billede olebole Juniormester
19. april 2003 - 23:26 #23
PS: Det er ikke uden grund, jeg sætter borderWidth direkte på div'et.
Satte jeg den i style-sheet'et, kunne jeg ikke hente den i scriptet - hvor den bliver brugt, når jeg sætter den effektive div-bredde 'prGrssBarW' (den maximale bredde, billedet må få).

Du kan selv fedte lidt rundt med timer-tiderne  :)
/mvh
Avatar billede olebole Juniormester
19. april 2003 - 23:28 #24
PPS: Husk endelig URL'en i din doc-type - f.eks:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

Ellers mistolker IE CSS-box-modellen og det giver ged i dimensionerne på baren  ;o)
Avatar billede erikjacobsen Ekspert
19. april 2003 - 23:31 #25
Og det er selvfølgelig Ole, som alt fra din hånd, 100% crossbrowser
kompatibelt?
Avatar billede olebole Juniormester
19. april 2003 - 23:35 #26
Det burde som minimum kunne fungere i IE5+, NS6+, Opera7+ og Mozilla  :)
Jeg erkender, det kun er til moderne telefon-brusere .......... ældre stegepande-brusere understøttes ikke  ;o)
/mvh
Avatar billede limemedia Nybegynder
21. april 2003 - 11:39 #27
ole > ser absolut spændende ud - jeg tester senere idag. Allerede før denne opgave stod der flere kasser pils på min skyldner liste :)
erik > 'bette' og 'bette' dig, det er vist en alternativ måde at tolke 'fænomenet' på :) Siden jeg koder på skal være Linux kompatibel, omend jeg ikke kan udelukke visse løsninger favoriserer visse browsere fremfor andre - man kan se farvetv på et sorthvid tv uden at klage, omvendt virker det som et turnoff... Giv brugerne de features deres systemer understøtter, uanset deres browser eller system - så rammer man bullseye.
Avatar billede erikjacobsen Ekspert
21. april 2003 - 12:41 #28
Ja, nemlig, lj. Lynx er en god browser. Det var mere det at man kunne
finde på at sætte en gif i stå, mens man stadig kunne se siden.
Avatar billede limemedia Nybegynder
21. april 2003 - 12:45 #29
erik >> mange ting laves desværre med hovedet under armen - både i og udenfor it - men jeg tror det står udenfor både min og din magt at ændre ret meget ved dét faktum :)
Avatar billede olebole Juniormester
22. april 2003 - 02:23 #30
Der er ikke noget at sige til, børnetallet er dalende, hvis folk også prøver at lave dem med hovedet under armen ............. det er altså ikke det helt rigtige sted at anbringe det i den situation  :D
Avatar billede limemedia Nybegynder
22. april 2003 - 02:50 #31
ole >> tror folk er nervøse - de øver og øver, men dét bliver aldrig til noget *g* når de endelig skal hvad de øver sig på, bliver de præstationsangste
Avatar billede olebole Juniormester
22. april 2003 - 14:28 #32
Hmmmmmm ......... måske nogen burde barbere sig under armen, så 'scenografien' skiller sig ud fra det rigtige sted  ;o))
Avatar billede limemedia Nybegynder
24. april 2003 - 05:41 #33
Så fik jeg endelig testet :) omend designet måske skal revurderes er funktionaliteten smuk *g* ligger du ikke et svar så jeg kan komme af med nogle point ?

Jeg takker og bukker for endnu engang at lære nyt fra dig :)
Avatar billede olebole Juniormester
24. april 2003 - 13:47 #34
swaaaaaar  ;o)
Avatar billede olebole Juniormester
24. april 2003 - 13:47 #35
Ooooops  :D
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