Avatar billede thanders Nybegynder
13. december 2003 - 21:55 Der er 4 kommentarer og
1 løsning

Modal dialog window

Hei,
Jeg har spurt om dette før uten suksess.

Jeg har en contenteditable Iframe, dvs.

I vinduet har jeg en Iframe med src attrubutt ="page.html"

i page.html har jeg en DIV som er satt til  contentEditable="true"

Hvis jeg gjør en seleksjon i teksten kan jeg og trykker på en knapp som åpner et nytt vindu(window.open) kan jeg få ex. tag i seleksjonen med

alert (window.opener.frames['editFrame'].document.selection.createRange().parentElement().tagName)

Men hvis jeg åpner et vindu med showModalDialog går det ikke, hvorfor ???

Vær så snill og hjelp meg.

med vennlig hilsen
Thomas Andersen
Avatar billede Slater Ekspert
14. december 2003 - 15:09 #1
Fordi en modal-dialog netop er modal - ingen kode kan udføres i det vindue der har åbnet det, før det nye vindue er blevet lukket igen. Derfor kan du ikke sende data til window.opener.

Desuden bør du ikke bruge ModalDialogs, da de kun virker i Internet Explorer - jeg vil anbefale dig at finde en anden løsning, hvis det er fordi man ikke må pille ved ting i det oprindelige vindue, før det nye er lukket.
Avatar billede roenving Novice
14. december 2003 - 15:23 #2
-- men til gengæld er der en direkte mekanisme til at sende data frem og tilbage mellem opener og dialog-boxen via anden-parameteren til showModalDialog:

var newSel = window.showModalDialog("dinDialogBoks.html",parent.frames['editFrame'].document.selection.createRange(),"dialogHeight:300px;dialogWidth:460px;help:no");


-- og så kan du i dinDialogBoks.html onload tage fat i værdien med dialogArgument:

<body onload="document.getElementById('mitElement').innerText=dialogArgument">

-- så skal du selv sørge for at sende værdierne tilbage med:

window.returnValue = document.getElementById('mitElement').innerHTML i dialogboxen ...

Til sidst kan du så aflæse værdien i variablen newSel !-)

(har aldrig prøvet det selv, men dette er det korte referat af, hvad Danny Goodman skriver om det i Javascript Bible !-)
Avatar billede roenving Novice
14. december 2003 - 15:26 #3
Og når jeg beskriver det sådan, skal det vel være:

var newSel = window.showModalDialog("dinDialogBoks.html",parent.frames['editFrame'].document.selection.createRange().text,"dialogHeight:300px;dialogWidth:460px;help:no");

>>viperine

-- og hvis Thomas bruger contenteditable, er han jo alligevel malet inde på den den af gulvet, så kan han jo ligesågodt udnytte alle muligheder, M$ stiller til rådighed !-)
Avatar billede Slater Ekspert
14. december 2003 - 16:55 #4
roenving -> ah... ja, det havde jeg jo egentlig lagt mærke til, men glemt igen i farten :) du har ret.
Avatar billede olebole Juniormester
15. december 2003 - 02:20 #5
<ole>

Hvis den dialog, man ønsker at lave, skal virke som en modal-dialog, må man endelig ikke undlade at lave den med showModalDialog(), blot fordi denne kun virker i IE. Man bør i stedet lave en alternativ løsning til andre browseere  :)

/mvh
</bole>
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