Avatar billede clausfod Nybegynder
08. juni 2004 - 08:58 Der er 10 kommentarer og
1 løsning

showModalDialog med IE5.0

Jeg bruger følgende til at åbne en html side med:
var winSettings = "center:yes;status:no;resizable:no;help:no;dialogWidth:730px;dialogHeight:425px";
var returnArgs = window.showModalDialog(theURL, window, winSettings);

Den åbnede side indeholder 3 frames, hvoraf den ene ser således ud:
<html>
<head>
<script language="JavaScript">
<!--
function loadingPD(){
    document.loadingform.submit();
}

//-->   
</script>
</head>
<body onLoad="loadingPD();">
    <div align="center">
    <br/><br/><br/>
    <b><%=jctfBean.getText("LOADING_PLEASE_WAIT", "WEB")%></b>
    <form name="loadingform" action="<%=response.encodeURL("../ProductDetailCtrl")%>" method="get">
        <input type="hidden" name="ProductNumber" value="<%=request.getParameter("ProductNumber")%>">
        <input type="hidden" name="Language" value="<%=request.getParameter("Language")%>">
        <input type="hidden" name="Type" value="<%=request.getParameter("Type")%>">
        <input type="hidden" name="frq" value="<%=request.getParameter("frq")%>">
        <input type="hidden" name="ProductNumberReplace" value="<%=request.getParameter("ProductNumberReplace")%>">
        <input type="hidden" name="data" value="<%=request.getParameter("data")%>">
        <input type="hidden" name="cmd" value="graphiccontent">       
    </form>
    </div>
</body>
</html>

Mit problem er at siden aldrig submitter. Fejlen er kun i IE5.0 5.5 og 6.0 virker fint. Er der nogle der kan hjælpe ?
Avatar billede ldanielsen Nybegynder
08. juni 2004 - 09:18 #1
Har du prøvet at undlade at sende automatisk? Måske er der en fejl i siden, som ikke ses fordi den submitter automatisk.

Lav i stedet en submitknap, i testfasen.
Avatar billede clausfod Nybegynder
08. juni 2004 - 09:33 #2
Det virker fint med en submitknap - men det skal ske automatisk..... Har du ellers nogle forslag ?
Avatar billede ldanielsen Nybegynder
08. juni 2004 - 10:38 #3
Virker det hvis du ikke bruger showModalDialog?
Avatar billede ldanielsen Nybegynder
08. juni 2004 - 10:45 #4
Fandt dette:
http://groups.google.dk/groups?hl=da&lr=&ie=UTF-8&frame=right&th=81bb93a5f288a07a&seekm=bq0gv6%241s0uvt%241%40ID-205671.news.uni-berlin.de#s

Der står blandt andet:
I'm team lead on an intranet application that uses lots of modal dialogs,
and I can tell you that "Submit"s don't work.  What you have to do is have a
script that concantenates all the values together from the form when the
"submit" button is clicked, assigns that value to a variable and returns it
before closing the window.  The hardest part is coordinating what's sent
back and forth, and what's processed.

So, you've got the right idea, with one two many steps.  Take a look:
<form>
    <!-- various input fields here... -->
    <input type=button value="Submit" onClick="submitButton_OnClick">
    <!-- notice: type="button" NOT  type="submit" -->
</form>

<script language="javascript" type="text/javascript">
function submitButton_OnClick(){
    // the form is never submitted
    frm = document.forms[0]
    sTemp = 'email=' + frm.email.value
    sTemp += "&fname=" + frm.fname.value
    sTemp += "&lname=" + frm.lname.value
    sTemp += "&open=" + frm.openContact.checked
    returnValue = sTemp
    window.close()
}

</script>

Hope this helps,

- Wm


Han siger altså at det ikke kan gøres, man angiver en anden metode; at lave en tekststreng og tildele den til en variabel (se funktionen)


en anden siger blot:
Put an iframe in the modal dialog and host the form in that.

Det lyder som en lidt "Dirty" metode, men hvis den virker ...
Avatar billede clausfod Nybegynder
08. juni 2004 - 11:27 #5
Tak for dit svar.

Jeg har dog ikke nogen submit-knap. Mit problem er at onLoad aldrig bliver kaldt. Ovenstående kode kan jeg derfor ikke bruge til noget - det virker i grunden fint uden brug af dialoger, men min kunde ønsker begge løsninger.....
Avatar billede ldanielsen Nybegynder
08. juni 2004 - 12:03 #6
Det handler ikke om submit eller ej, for submit virker ikke (siger de). Men prøv dette:

<html>
<head>
<script language="JavaScript">
<!--
function loadingPD(){
    frm = document.loadingform;
    sTemp = 'ProductNumber=' + frm.ProductNumber.value;
    sTemp += "&Language=" + frm.Language.value;
    sTemp += "&Type=" + frm.Type.value;
    sTemp += "&frq=" + frm.frq.value;
    sTemp += "&ProductNumberReplace=" + frm.ProductNumberReplace.value;
    sTemp += "&data=" + frm.data.value;
    sTemp += "&cmd=" + frm.cmd.value;
    returnValue = sTemp;
}

//-->   
</script>
</head>
<body onLoad="loadingPD();">
    <div align="center">
    <br/><br/><br/>
    <b><%=jctfBean.getText("LOADING_PLEASE_WAIT", "WEB")%></b>
    <form name="loadingform" action="<%=response.encodeURL("../ProductDetailCtrl")%>" method="get">
        <input type="hidden" name="ProductNumber" value="<%=request.getParameter("ProductNumber")%>">
        <input type="hidden" name="Language" value="<%=request.getParameter("Language")%>">
        <input type="hidden" name="Type" value="<%=request.getParameter("Type")%>">
        <input type="hidden" name="frq" value="<%=request.getParameter("frq")%>">
        <input type="hidden" name="ProductNumberReplace" value="<%=request.getParameter("ProductNumberReplace")%>">
        <input type="hidden" name="data" value="<%=request.getParameter("data")%>">
        <input type="hidden" name="cmd" value="graphiccontent">       
    </form>
    </div>
</body>
</html>


så skulle returnArgs gerne indeholde en streng af formen "var1=value&var2=value2& ..."
Avatar billede clausfod Nybegynder
08. juni 2004 - 15:00 #7
Desværre virker dette heller ikke - det er som om loadingPD() aldrig bliver kaldt.

Dette virker heller ikke:
<html>
<head>
</head>
<body>
    <div align="center">
    <br/><br/><br/>
    <b><%=jctfBean.getText("LOADING_PLEASE_WAIT", "WEB")%></b>
    <form name="loadingform" action="<%=response.encodeURL("../ProductDetailCtrl")%>" method="get">
        <input type="hidden" name="ProductNumber" value="<%=request.getParameter("ProductNumber")%>">
        <input type="hidden" name="Language" value="<%=request.getParameter("Language")%>">
        <input type="hidden" name="Type" value="<%=request.getParameter("Type")%>">
        <input type="hidden" name="frq" value="<%=request.getParameter("frq")%>">
        <input type="hidden" name="ProductNumberReplace" value="<%=request.getParameter("ProductNumberReplace")%>">
        <input type="hidden" name="data" value="<%=request.getParameter("data")%>">
        <input type="hidden" name="cmd" value="graphiccontent">       
    </form>
    </div>
        <script language="JavaScript">
    document.loadingform.submit();
        </script>
</body>
</html>

Der må være noget generelt galt med dialogs i ie5.0 - det virker fint i ie5.5+....
Avatar billede ldanielsen Nybegynder
09. juni 2004 - 08:54 #8
Jeg tror du skal droppe dialogs. Jeg har i hvert fald givet op nu.

Er der et minus ved at bruge en almindelig window.open? Jeg er klar over at det åbnende vindue skal vente på "svaret" fra denne form, men der må kunne laves en workaround
Avatar billede clausfod Nybegynder
09. juni 2004 - 09:25 #9
Jeg fandt løsningen:

<html>
<head>
<script language="javascript">
function submitform(doSubmit){
    if (doSubmit=='True'){
        document.autosubmit.submit();
    } else{
        location.href='<%=response.encodeURL("../ProductDetailCtrl")%>?ProductNumber=<%=request.getParameter("ProductNumber")%>&Language=<%=request.getParameter("Language")%>&Type=<%=request.getParameter("Type")%>&frq=<%=request.getParameter("frq")%>&ProductNumberReplace=<%=request.getParameter("ProductNumberReplace")%>&data=<%=request.getParameter("data")%>&cmd=graphiccontent';
    }
}
</script>
</head>
<body onload="submitform('False');">
    <div align="center">
    <br><br><br>
    <b><%=jctfBean.getText("LOADING_PLEASE_WAIT", "WEB")%></b>
    <form name="autosubmit" action="<%=response.encodeURL("../ProductDetailCtrl")%>" method="get" >
    </form>
    </div>
</body>
</html>

Denne løsning virker selvfølgelig kun hvis jeg kan bruge GET.

Tak for de gode indspark - det får du lidt point får - opret et svar og jeg tildeler :-)
Avatar billede ldanielsen Nybegynder
09. juni 2004 - 10:35 #10
Ja tak for det. Dialogs er noget svært noget.

Et par ting (som du ikke behøver at svare mig på, men se lige på det):
Hvornår bliver doSubmit == 'True'??
Hvis aldrig, så har du ingen bruge for formen

Hvis du skriver true og false med små bogstaver, og dropper anførselstegnene, så er det en "rigtig" boolean, og du kan fx. spørge:
if (doSubmit){ ...

en lille ting, men det gør det mindre tungt for browseren, og man skal vænne sig til at optimere ALTID.
Avatar billede clausfod Nybegynder
09. juni 2004 - 11:00 #11
Tak for de sidste hints :-)
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