Toon posts:

[JS] showModalDialog return niets met 'javascript' url

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een modal dialog in een webpagina maken waarbij de url een 'javascript:document.write(...);' url is. Deze string wordt dynamisch opgebouwd in de bronpagina, vandaar dat het niet een vaste html pagina kan zijn.

De source ziet er ongeveer zo uit:
JavaScript:
1
2
3
4
5
var url = "javascript:document.write(\"<html><head><";
url += "script>function doClose(){window.returnValue=textarea0.value;window.close();}<";
url += "/script></head><body><textarea style='width:300px;height:100px;' id='textarea0'></textarea><br><br><input type=button onClick='doClose()'></body></html>\");";

alert(window.showModalDialog(url));

De url string is zo gek omdat anders "<script></script>" gek gaat doen (blijkbaar), niet op letten ;)

Dit stuk code geeft bij mij in de alert een 'undefined', terwijl ik volgens mij de return value goed instel. Hij zou de inhoud van de textbox in de modalDialog in de alert moeten zetten, toch?

Ook het sturen van een argument naar de modalDialog werkt niet, deze geeft ook 'undefined'.

Komt dit omdat de source van de pagina door javascript opgebouwd wordt? Is er een andere manier om data van de dialog box naar de orginele pagina te krijgen?

  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Dit werkt niet omdat je toch een een normale url moet gebruiken hiervoor, ik heb het even met een normale pagina getest en dat werkt wel. Maar omdat je het toch dynamisch wil houden kun je dit op een andere manier oplossen. Het 2de argument dat je aan je dialog mee kan geven kan bijvoorbeeld een object, array of string zijn. Dus in jouw geval:

pagina1.html
code:
1
2
3
4
5
6
7
<script type="text/javascript">

  var url = "<script type='text/javascript'>function doClose(){ window.returnValue=document.getElementById('textarea0').value; window.close();}<\/script>";
  url += "<textarea style='width:300px;height:100px;' id='textarea0'></textarea><br><br><input type=button value='Oke' onClick='doClose()'>";

  alert(showModalDialog("pagina2.html", url));
</script>

pagina2.html
code:
1
2
3
4
5
6
7
<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">document.write(window.dialogArguments);</script>
  </body>
</html>

En het probleem met het woordje </script> kon je verhelpen door de / te escapen: \/ ;)

Verwijderd

Topicstarter
André schreef op zaterdag 18 juni 2005 @ 00:04:
Dit werkt niet omdat je toch een een normale url moet gebruiken hiervoor, ik heb het even met een normale pagina getest en dat werkt wel. Maar omdat je het toch dynamisch wil houden kun je dit op een andere manier oplossen. Het 2de argument dat je aan je dialog mee kan geven kan bijvoorbeeld een object, array of string zijn. Dus in jouw geval:

pagina1.html
code:
1
...

pagina2.html
code:
1
...
Dit werkt inderdaad... het jammere is alleen dat ik een linkje wil kunnen maken waar alle functionaliteit in zit. Het gehele stukje javascript-code uit mijn post komt in mijn favorieten te staan, en als ik die aanklik krijg ik een modaldialog dat mij dus extra functionaliteit biedt, zonder dat dit in de orginele site hoeft te zitten, of zelfs maar online hoeft te staan (zodat ook anderen het kunnen gebruiken...)

Ik wil namelijk een modaldialog maken die gebruikers van een forum meer mogelijkheden biedt bij het reply-en...
En het probleem met het woordje </script> kon je verhelpen door de / te escapen: \/ ;)
Thanks :)

Verwijderd

Topicstarter
Dit zou waarschijnlijk wel op te lossen zijn door middel van een normale popup, toch?

Het gekke is dat is de exacte URL uit de modaldialog niet naar een window.open kan sturen, omdat hij dan vindt dat er ergens op die regel een string niet goed afgesloten wordt, en ik kan niet vinden waar...

Of kan je zulke uitgebreide javascript ook niet in een normale popup zetten..?