Avatar billede brownghost Nybegynder
22. april 2006 - 11:06 Der er 21 kommentarer og
1 løsning

Firefox, openDialog, problem

Denne kode bruger jeg når jeg skal upload et bilede, det virker fint i IE med ikke i Firefox :(
Kan det laves om så det virker i begge to?
jeg har forsøgt en dl ting men kan ikke få det til at spille :(


function uploadImage(id) {
    return openDialog('/admin/Upload-editor/dialogs/imageupload/?'+id, 300, 150)
}

// Open dialog and return value when closed
function openDialog(url, width, height) {
    return showModalDialog("/admin/Upload-editor/dialog.asp?"+url, "", "dialogWidth:"+width+"px;dialogHeight:"+height+"px;help:no;status:no;scroll:no;");
}
Avatar billede erikjacobsen Ekspert
22. april 2006 - 11:53 #1
Avatar billede brownghost Nybegynder
22. april 2006 - 12:15 #2
hummm jeg er ikke ret god til det der java script. kunne man få dig til ta lave den funktion om jeg bruger til det der virker i begge 2?

Giver gerne en skilling for det :)
Avatar billede erikjacobsen Ekspert
22. april 2006 - 12:28 #3
Deres forslag står jo her
function modalWin() {
if (window.showModalDialog) {
window.showModalDialog("xpopupex.htm","name",
"dialogWidth:255px;dialogHeight:250px");
} else {
window.open('xpopupex.htm','name',
'height=255,width=250,toolbar=no,directories=no,status=no,
continued from previous linemenubar=no,scrollbars=no,resizable=no,modal=yes');
}
}

Men virker det? Jeg får ikke et modalt vindue på http://javascript.about.com/library/xpopupex.htm i min version af firefox.
Avatar billede brownghost Nybegynder
22. april 2006 - 13:46 #4
Ja min popup virker i firefox på den side..

mit probleme r jeg ikke kan finde ud af at lave den ehr kode om så det virker, med firefox.

function uploadImage(id) {
    return openDialog('/admin/texteditor/dialogs/imageupload/?'+id, 300, 170)
}

// Open dialog and return value when closed
function openDialog(url, width, height) {
    return showModalDialog("/admin/texteditor/dialog.asp?"+url, "", "dialogWidth:"+width+"px;dialogHeight:"+height+"px;help:no;status:no;scroll:no;");
}


Bruger de her 2 funktioner sammen jo, da jeg skal have nogle værdiermed når vinduer åbner og lukker osv. det er det jeg vil høre om du kan lave om ?
Så det virker både i IE og FF
Avatar billede erikjacobsen Ekspert
22. april 2006 - 13:48 #5
Jeg får også en popup på linket ovenfor men det er ikke modalt, og jeg bruger endda firefox. Så det er spørgsmålet om det er værd at bøvle med.
Avatar billede brownghost Nybegynder
22. april 2006 - 14:04 #6
har lige fundet ud af det virker det jeg har, unden at lave det om, problemet er et et helt andet sted.

<input type="text" id="imageid" name="lngImageID" value="<%= rsRecord("ImageID") %>" style="display: none;">
                    <img id="imagepreview" src="/image.asp?id=<%= rsRecord("ImageID") %>&width=100" style="border: 1px solid #000000; cursor: hand;" o onclick="imageid.value=uploadImage(imageid.value); this.src='/image.asp?id='+imageid.value+'&width=100';">

FF vil ikke bruge onclick in IMG tagget, det er nu problemet, når det er løst så virker det :).... er ved at søge på alternativ til onclick i IMG tag
Avatar billede brownghost Nybegynder
22. april 2006 - 14:11 #7
Nej jeg LØG, sad i IE da jeg testede, LOL, det virker forsat ikke....
Avatar billede mclemens Nybegynder
22. april 2006 - 14:44 #8
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
function uploadImage(id) {
    return openDialog('/admin/Upload-editor/dialogs/imageupload/?'+id, 300, 150)
}

// Open dialog and return value when closed
function openDialog(url, width, height) {
    if(document.all){return showModalDialog("/admin/Upload-editor/dialog.asp?"+url, "", "dialogWidth:"+width+"px;dialogHeight:"+height+"px;help:no;status:no;scroll:no;");

}else{window.open("/admin/Upload-editor/dialog.asp?"+url,"",
        "width="+width+",height="+height+",dialog=1,modal=1");}

}
</script>

</head>

<body>
<a href="#" onclick="uploadImage(123);">test</a>

</body></html>
Avatar billede mclemens Nybegynder
22. april 2006 - 14:44 #9
Avatar billede mclemens Nybegynder
22. april 2006 - 14:45 #10
hmmm, ved ikke om du vil have return på den window.open også...
Avatar billede mclemens Nybegynder
22. april 2006 - 14:49 #11
hov, det var det samme som erik kom med... undskyld :/
Avatar billede mclemens Nybegynder
22. april 2006 - 15:03 #12
måske kan focuseringen i FF gennemtvinges lidt mere med
http://www.eksperten.dk/spm/697302#rid6166446
eller http://www.eksperten.dk/spm/697302#rid6167483
Avatar billede olebole Juniormester
22. april 2006 - 16:55 #13
<ole>

mclemens >> Der er nu en væsentlig forskel på Eriks og dit forslag  :)

Læg mærke til, at Erik eksplicit spørger, om browseren forstår 'window.showModalDialog'. Du spørger derimod, om browseren forstår 'document.all'.
Udover IE forstår Opera også 'document.all' - men den forstår til gengæld ikke 'window.showModalDialog'.

Morale: Spørg på det, du skal bruge  ;o)

/mvh
</bole>
Avatar billede mclemens Nybegynder
22. april 2006 - 17:09 #14
ok :)
Avatar billede brownghost Nybegynder
22. april 2006 - 18:16 #15
mclemens:  nu kan den popup både IE og FF.
Dog virker det i IE, men i FF, kommer der ikke noget previw frem, den viser ikke det jeg uploader, og hvis jeg gemmer, kommer der heller ikke noget billede frem når jeg trækker tingene ud igen.

Altså der bliver ikke oprette noget i databasen.
tror det er fordi der mangler ID'er osv.
------------------------------------------
function uploadImage(id) {
    return openDialog('/admin/Upload-editor/dialogs/imageupload/?'+id, 300, 150)
}

// Open dialog and return value when closed
function openDialog(url, width, height) {
    if(document.all){return showModalDialog("/admin/Upload-editor/dialog.asp?"+url, "", "dialogWidth:"+width+"px;dialogHeight:"+height+"px;help:no;status:no;scroll:no;");

}else{window.open("/admin/Upload-editor/dialog.asp?"+url,"",
        "width="+width+",height="+height+",dialog=1,modal=1");}

}

uploader og viser resultat med den her:
<input type="text" id="imageid" name="lngImageID" value="<%= rsRecord("ImageID") %>" style="display: none;">
        <img width="100" height="75" id="imagepreview" src="/image.asp?id=<%= rsRecord("ImageID") %>&width=100&height=75" style="border: 1px solid #000000; cursor: pointer;" onclick="imageid.value=uploadImage(imageid.value); this.src='/image.asp?id='+imageid.value+'&width=100&height=75';">
------------------------

kan du trylle mere ?? :) tak
Avatar billede erikjacobsen Ekspert
22. april 2006 - 18:28 #16
Du kan jo ikke bede om imageid.value, når imageid kommer fra et id="imageid" i et tag. Ok, så er der en enkelt browser der uforståeligt nok tillader det. Id-er skal altid hentes med getElementById
Avatar billede mclemens Nybegynder
22. april 2006 - 18:48 #17
Som Erik siger så virker det id kun med IE... Prøv at skifte scriptet til det her... så laver vi en genvej der gør at de andre også vil være med til det...

<script type="text/javascript">

id="";
window.onload=function(){
imageid=document.getElementById("imageid");
}

function uploadImage(id) {alert(id);
    return openDialog('/admin/Upload-editor/dialogs/imageupload/?'+id, 300, 150)
}

// Open dialog and return value when closed
function openDialog(url, width, height) {

    if(window.showModalDialog){return showModalDialog("/admin/Upload-editor/dialog.asp?"+url, "", "dialogWidth:"+width+"px;dialogHeight:"+height+"px;help:no;status:no;scroll:no;");

}else{window.open("/admin/Upload-editor/dialog.asp?"+url,"",
        "width="+width+",height="+height+",dialog=1,modal=1");}

}
</script>
Avatar billede mclemens Nybegynder
22. april 2006 - 19:01 #18
arg id=""; skal rettes til imageid="";
Avatar billede mclemens Nybegynder
22. april 2006 - 19:15 #19
og den "dumme" alert(id); skal nok væk :P
Avatar billede brownghost Nybegynder
23. april 2006 - 10:50 #20
Virker ikke endnu, men vi er da på vej.

yderliger har jeg rettet noget på upload siden default file:
det her; strOnLoad=  "document.getElementById(" & lngID & ");"
har jeg sat ind for at den nu hente det ID i alert, så vi kan se det virker.
Altså kun hvis, der ligger et billede i forevejen,

If Request("mode") = "upload" Then
    lngID = Val(Request("id"))
    lngNewID = UploadImageAndRetrieveID(lngID)
    strOnLoad = "doReturn(" & lngNewID & ");"
Else
    'strOnLoad = "window.returnValue=" & lngID
    strOnLoad=  "document.getElementById(" & lngID & ");"
End If

det du gør her:
window.onload=function(){
imageid=document.getElementById("imageid");

har jeg stort set allrede i en funktion, kalder strOnLoad.

strOnLoad, har blant andet den her:
strOnLoad = "doReturn(" & lngNewID & ");"
den funktion der hedder doReturner =

// Return value and close window
function doReturn(returnValue) {
    parent.window.returnValue=returnValue
    parent.window.close()
}

Forstår firefox det den funktion gør? eller skal vi lave det om??
Avatar billede mclemens Nybegynder
23. april 2006 - 11:51 #21
[ Forstår firefox det den funktion gør? eller skal vi lave det om?? ]
- Jeg forstår ikke lige helt funktionen... syntes mere det ser ud som om at du tildeler en forbindelse til objectet via en variabel med navnet strOnLoad og ikke imageid som jeg gjorde... Prøver at kigge på det lidt senere... men tror dog ikke du får forbindelsen tildelt i FF med det ovenstående... prøv evt. at lave en alert her:

if Request("mode") = "upload" Then
    lngID = Val(Request("id"))
    lngNewID = UploadImageAndRetrieveID(lngID)
    strOnLoad = "doReturn(" & lngNewID & ");"
alert(imageid);
Else
...

ellers prøv en alert her:

...
Else
    'strOnLoad = "window.returnValue=" & lngID
    strOnLoad=  "document.getElementById(" & lngID & ");"
alert(imageid);
End If


^ Hvis FF ikke siger noget ved nogen af dem ( [object] ) så har du ikke fået tildelt en forbindelse... (fjern den evt. den ene af dem skiftevis - hvis du bare får javascript fejl på begge udgaver så er shorlinket heller ikke tildelt - du kan dog prøve at lave en alert på strOnLoad og måske bruge strOnLoad.value istedet for imageid.value hvis strOnLoad får tildelt en forbindelse til objectet...
Avatar billede mclemens Nybegynder
23. april 2006 - 17:51 #22
Her er en anden udgave hvor du kan se at FF får værdien fra inputten med...
Har du prøvet det window.onload jeg skrev??? Her er et eksempel hvor jeg midlertidig har fjernet dialog og modal i ff samt tilføjet location så du kan se hvad den tager med over... Ret evt. body'en delen efter test...


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

imageid="";
window.onload=function(){
imageid=document.getElementById("imageid");
}

function uploadImage(id) {
    return openDialog('/admin/Upload-editor/dialogs/imageupload/?'+id, 300, 150)
}

// Open dialog and return value when closed
function openDialog(url, width, height) {
    if(window.showModalDialog){return showModalDialog("/admin/Upload-editor/dialog.asp?"+url, "", "dialogWidth:"+width+"px;dialogHeight:"+height+"px;help:no;status:no;scroll:no;");

}else{window.open("1.html?"+url,"","width="+width+",height="+height+",location=1");}//I denne linje skal location=1 erstattes med dialog=1,modal=1 efter test

}
</script>

</head>

<body>

<input type="text" id="imageid" name="lngImageID" value="123billede" style="display: none;">
        <img width="100" height="75" id="imagepreview" src="/image.asp?id123billede&width=100&height=75" style="border: 1px solid #000000; cursor: pointer;" onclick="imageid.value=uploadImage(imageid.value); this.src='/image.asp?id='+imageid.value+'&width=100&height=75';">

</body></html>
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