Avatar billede dustbunny Nybegynder
12. november 2004 - 13:08 Der er 23 kommentarer og
1 løsning

vis gif animation mens billed bliver uploadet

Kan det lade sig gøre at vise en gif animation mens en side er igang med at uploade en fil?
Siden bliver åbnet som et dialog vindue. Og indeholder et iframe med sig selv i så det kan lade sig gøre at navigere rund i dialog vinduet.
Jeg har forsøgt mig med følgende kode, men der sker ikke noget mens jeg uploader :(

<%
If Request("init") <> "" Then
%>
<html>
<head>
<title>V&aelig;lg et billede</title>

<script type="text/JavaScript">
<!--
var myOpener = window.dialogArguments;

var g_bFrame1Loaded = false;
var g_intTimer = 0;
function checkLoad() {
    if(g_bFrame1Loaded) {
        clearTimeout( g_intTimer );
        document.getElementById('overlay').style.visibility = "hidden";
        document.getElementById('loading').style.visibility = "hidden";
    } else {
        g_intTimer = setTimeout( "checkLoad()", 1000 );
        document.getElementById('overlay').style.visibility = "visible";
        document.getElementById('loading').style.visibility = "visible";
    }
}
//-->
</script>

<style type="text/css">
html, body    { height: 100%; margin: 0px; }
#overlay    { background-color: #3c3c3c; position: absolute; z-index: 5; width: 100%; height: 100%; filter: alpha(opacity=20)      }
#loading    { position: absolute; z-index: 10; width: 100%; height: 100% }
</style>

</head>
<body onload="java script:checkLoad();">

<div id="overlay"></div>
<div id="loading">
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%">
<tr height="100%">
<td align="center" valign="middle" width="100%" height="100%"><img src="loading.gif" height="50" width="170" border="0"></td>
</tr>
</table>
</div>
<iframe src="productimage.asp" style="width:100%;height:100%" frameborder="0" name="content"></iframe>

</body>
</html>

<%
Else
%>

<html>
<head>
<title>V&aelig;lg et billede</title>
<link rel="stylesheet" type="text/css" href="css/cms.css">
<script language="JavaScript">
<!--
var callerWindowObj = dialogArguments;

function getInfoAndUpdate() {
    callerWindowObj.pImage = document.form.chooseImage.value;
    callerWindowObj.update();
    window.close();
}

function cancel() {
    window.close();
}
// -->
</script>
</head>

<%
strMode = Request("mode")

If strMode = "upload" Then

Set Upload = Server.CreateObject("Persits.Upload.1")
Upload.SaveVirtual("../images/products/temp/")

For Each File in Upload.Files
strFilePath = "../images/products/temp/" & File.OriginalFileName
Next
%>
<body onload="parent.g_bFrame1Loaded = true;" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
<form name="form" method="POST" enctype="multipart/form-data" action="productimage.asp?mode=upload">
<img src="images/noimg.gif" height="80" width="70" border="0" name="pImg">
<input type="file" size="50" name="file">
<input type="submit" value=" Upload ">
<input value="Ok" type="button" onclick="java script:getInfoAndUpdate();">
<input value="Cancel" type="button" onclick="java script:cancel();">
<input type="hidden" value="<%= strFilePath %>" id="chooseImage">
</form>
<script language="JavaScript">
<!--
document.form.pImg.src = "<%= strFilePath %>";
// -->
</script>
</body>
</html>
<%
Else
%>
<body onload="parent.g_bFrame1Loaded = true;" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
<form name="form" method="POST" enctype="multipart/form-data" action="productimage.asp?mode=upload">
<img src="images/noimg.gif" height="80" width="70" border="0" name="pImg">
<input type="file" size="50" name="file">
<input type="submit" value="Upload">
<input value="Ok" type="button" onclick="java script:getInfoAndUpdate();" disabled>
<input value="Cancel" type="button" onclick="java script:cancel();">
<input type="hidden" value="<%= strFilePath %>" id="chooseImage">
</form>
<script language="JavaScript">
<!--
document.form.pImg.src = callerWindowObj.document.form.pImg.src;
// -->
</script>
</body>
</html>
<%
End If
End If
%>

Er der en anden måde at gøre det på?
Avatar billede dustbunny Nybegynder
12. november 2004 - 13:10 #1
Jeg åbner dialog vinduet med følgende kode:
onclick="java script:showModelessDialog('productimage.asp?init=true', window, 'dialogWidth:400px; dialogHeight:250px; status:no; help:no; scroll:no');"
Avatar billede olebole Juniormester
12. november 2004 - 13:36 #2
<ole>

"men der sker ikke noget mens jeg uploader" - betyder det, at skærmen bliver sort - at dit hjerte går i stå - eller hvad er det, du mener burde ske, som ikke sker? Eller rettere: Hvad sker der?

En helt anden ting er, at man aldrig skriver 'java script:' i en event-handler. JavaScript pseudo-protokollen bruges kun i adresselinien eller andre steder, der normalt bruges til navigation, men som ikke er beregnet til at afvikle JavaScript. Det er en event-handler  ;o)

/mvh
</bole>
Avatar billede dustbunny Nybegynder
12. november 2004 - 13:41 #3
Det jeg mener er at den ikke viser laget med min gif animation når jeg klikker på upload...den uploader fint billedet og alt det.
Men når siden loader den første side ind i iframet virker det godt nok...
Og jeg skal nok fjerne 'javascript' for din skyld ;)
Håber du fatter det, har lidt svært ved at forklare mig :) heh
Avatar billede olebole Juniormester
12. november 2004 - 13:43 #4
Aha ... nu kan jeg se, hvorfor der ikke sker noget  :)
I din dialog skal du skrive en form, som du submitter mod en skjult iframe:

<iframe src="about:blank" name="loadFR" style="display:none"></iframe>

<form name="form" method="POST" enctype="multipart/form-data" action="productimage.asp" target="loadFR">
<input type="hidden" name="action" value="upload">
Avatar billede olebole Juniormester
12. november 2004 - 13:44 #5
... og så kald din form noget andet. 'form' er et reserveret ord i JavaScript og kan skabe en masse rod  ;o)
Avatar billede olebole Juniormester
12. november 2004 - 13:45 #6
Jeg ved ikke, om du kan se det, men på denne måde reloader dokumentet i dialogen ikke ... den egentlige upload sker i den skjulte iframe, mens giffen gerne skulle køre  :)
Avatar billede dustbunny Nybegynder
12. november 2004 - 13:47 #7
jeg har fattet det, men er lige igang med at teste :)
Avatar billede olebole Juniormester
12. november 2004 - 13:51 #8
Skulle giffen evt. gå i stå ... der er jo tale om navigation, der kan have det med at stoppe gif-animationer, må du kunne sætte fut i den igen med:

<script type="text/JavaScript">
function refreshAnim() {
    document.FORM_NAVN.pImg.src = document.FORM_NAVN.pImg.src;
}
</script>

<form ........... onsubmit="setTimeout('refreshAnim()',100)">

... husk at skifte formnavnet  ;o)
Du kan evt. fiddle lidt rundt med tiden på timeout'en
Avatar billede olebole Juniormester
12. november 2004 - 13:54 #9
... nå ja ... så lagde jeg din context-variabel 'action' ned i et hidden field. Der er ingen grund til både at sende POST- og GET-variabler. Det er bare noget med kodeskik ... jeg kan bedst lide det sådan  :)
Avatar billede dustbunny Nybegynder
12. november 2004 - 13:59 #10
hmm...jeg kan ikke få den til at virke...
Avatar billede dustbunny Nybegynder
12. november 2004 - 14:01 #11
Den gør ikke noget som helst når jeg trykker upload nu ? Altså jeg tror den uploader filen i den skjulte iframe, eller ikke noget....
Avatar billede dustbunny Nybegynder
12. november 2004 - 14:01 #12
ellers ikke noget... skulle det være :)
Avatar billede dustbunny Nybegynder
12. november 2004 - 14:17 #13
Den viser ikke min gif og den uploader heller ikke noget så længe det er
<input type="hidden" name="action" value="upload">
istedet for det jeg havde productimage.asp?mode=upload
Avatar billede dustbunny Nybegynder
12. november 2004 - 14:18 #14
øhh...jeg mener <input type="hidden" name="mode" value="upload">
Avatar billede olebole Juniormester
12. november 2004 - 15:09 #15
Nej, det er klart - så skal du spørge efter den på serveren  :)

Prøv:
  strMode = Request.Form("mode")
i stedet for:
  strMode = Request("mode")

så skulle du gerne få fat i den
Avatar billede olebole Juniormester
12. november 2004 - 15:36 #16
Jeg har lige lavet et lille eksempel:
  http://www.tjenester.dk/x-codes.dk/eksperten/anim_upload/

Når upload'en er færdig, kalder jeg fra iframe'en med:
  print "<script type=\"text/JavaScript\">parent.document.getElementById('bar').src='t.gif'</script>";

Det er PHP, men du kan vel skrive:
  Response.Write("<script type=""text/JavaScript"">parent.document.getElementById('bar').src='t.gif'</script>")

'bar' er giffen - og 't.gif' er en transparent gif på 1*1 pixel.
Avatar billede dustbunny Nybegynder
12. november 2004 - 16:38 #17
Du fik mig på rette spor med dit skjulte iframe...
Godt nok skulle der ændres en del på scriptet, men nu virker det da. Jeg kan stadig ikke få den til at virke med <input type="hidden" name="mode" value="upload"> kan det ha noget at gøre med at det er et modaldialog vindue?
Jeg poster lige min kode, selv om det ikke er den kønneste :)
Smid et svar...
Avatar billede dustbunny Nybegynder
12. november 2004 - 16:39 #18
<%
If Request("init") <> "" Then
%>

<html>
<head>
<title>V&aelig;lg et billede</title>
<style type="text/css">
html, body    { height: 100%; margin: 0px; }
</style>
</head>
<body>
<iframe src="productimage.asp" style="width:100%;height:100%" frameborder="0" scrolling="no"></iframe>
</body>
</html>

<%
Else

strAction = Request("action")

If strAction = "upload" Then

Set Upload = Server.CreateObject("Persits.Upload.1")
Upload.SaveVirtual("../images/products/temp/")

For Each File in Upload.Files
strFilePath = "../images/products/temp/" & File.OriginalFileName
Next
%>

<html>
<head>
</head>
<body onload="parent.g_bFrame1Loaded = true;">
<script language="JavaScript">
<!--
parent.document.myform.chooseImage.value = "<%= strFilePath %>";
parent.document.myform.pImg.src = "<%= strFilePath %>";
parent.document.myform.okbutton.disabled = false;
// -->
</script>
</body>
</html>

<%
Else
%>

<html>
<head>
<title>V&aelig;lg et billede</title>
<link rel="stylesheet" type="text/css" href="css/cms.css">
<script language="JavaScript">
<!--
var callerWindowObj = dialogArguments;

function getInfoAndUpdate() {
    callerWindowObj.pImage = document.myform.chooseImage.value;
    callerWindowObj.update();
    window.close();
}

function cancel() {
    window.close();
}

var g_bFrame1Loaded = false;
var g_intTimer = 0;
function checkLoad() {
    if(g_bFrame1Loaded) {
        clearTimeout( g_intTimer );
        document.getElementById('overlay').style.visibility = "hidden";
        document.getElementById('loading').style.visibility = "hidden";
    } else {
        g_intTimer = setTimeout( "checkLoad()", 1000 );
        document.getElementById('overlay').style.visibility = "visible";
        document.getElementById('loading').style.visibility = "visible";
    }
}
// -->
</script>
<style type="text/css">
html, body    { height: 100%; margin: 0px; }
#overlay    { visibility: hidden; background-color: #3c3c3c; position: absolute; z-index: 5; width: 100%; height: 100%; filter: alpha(opacity=20); }
#loading    { visibility: hidden; position: absolute; z-index: 10; width: 100%; height: 100% }
</style>
</head>
<body leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
<div id="overlay"></div>
<div id="loading">
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%">
<tr height="100%">
<td align="center" valign="middle" width="100%" height="100%"><img src="images/loading.gif" height="50" width="170" border="0"></td>
</tr>
</table>
</div>
<iframe src="about:blank" name="loadFR" style="display:none"></iframe>
<form name="myform" method="POST" enctype="multipart/form-data" action="productimage.asp?action=upload" target="loadFR" onsubmit="checkLoad();">
<img src="images/noimg.gif" height="80" width="70" border="0" name="pImg">
<input type="file" size="50" name="file">
<input type="submit" value="Upload">
<input value="Ok" type="button" name="okbutton" onclick="getInfoAndUpdate();" disabled>
<input value="Cancel" type="button" onclick="cancel();">
<input type="hidden" name="chooseImage">
</form>
<script language="JavaScript">
<!--
document.myform.pImg.src = callerWindowObj.document.myform.pImg.src;
// -->
</script>
</body>
</html>

<%
End If
End If
%>
Avatar billede olebole Juniormester
12. november 2004 - 18:16 #19
Skriver du:

strAction = Request("action")
If strAction = "upload" Then
... osv

og lægger et felt som dette i formen:
<input type="hidden" name="action" value="upload">

Er jeg ret sikker på, det virker  :)
Avatar billede dustbunny Nybegynder
12. november 2004 - 18:31 #20
Det gør det ikke :)
Avatar billede dustbunny Nybegynder
12. november 2004 - 18:39 #21
Til at starte med da jeg begyndte på koden havde jeg også lavet det som du skriver, men kunne ikke få det til at virke. Så prøvede jeg det andet og så virkede det...?
Avatar billede olebole Juniormester
12. november 2004 - 18:41 #22
Hmmm ... jeg synes din kode er temmelig rodet og jeg har ikke en lokal IIS installeret for tiden, så jeg kan ikke teste. Jeg er temmelig sikker på, du må lave en fejl  :)
Avatar billede dustbunny Nybegynder
12. november 2004 - 18:45 #23
Det har jeg sikkert :) Men det må blive en anden gang hehe
smid et svar...kaste!
Avatar billede olebole Juniormester
12. november 2004 - 19:42 #24
*griiiiiib*  :)
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