Toon posts:

[js]Focus houden op het iframe bij popup.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een iframe waarin ik aan het editten ben. Nu wil ik een plaatje invoegen in dat iframe. Dit doe ik door de cursor te plaatsen in het iframe en dan op een knop te drukken die een pop-up opent. Ik kan hier een plaatje selecteren, die dan ingevoegd wordt op de plaats van de cursor.

De plek van die cursor onthou ik door een pointer te maken naar:

var cursor = window.opener.foo.document.selection.createRange().text;

Ik heb een probleem wanneer ik die popup open en dan ergens anders klik oid, zodat ik mijn pointer kwijt ben. Het plaatje wordt dan namelijk op de plek geplaatst waar ik het laatst klikte. hoe kan ik dit het beste oplossen?

- plek onthouden van de cursor. Maar hoe?
- popup sluiten wanneer hij focus verliest. Dit is een probleem, want de popup roept nog een andere pagina aan, ook binnen die popup.
- popup ten alle tijden gefocused houden. Dit is ook een probleem, bij het plaatsen van het plaatje.

Wie heeft hier een tip voor. Ik zag op dit forum al iets van Pelle, maar ik snapte niet helemaal hoe hij dat bedoelde. Alvast dank voor suggesties.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

daar zijn nu modalDialogs voor uitgevonden ;)

Bovendien is het een stuk handiger om de code in de editor te houden, ipv de functie in de popup te plaatsen. Voer een functie uit in de de opener en laat die het afhandelen..

Dit laatste wordt een stuk makkelijker gemaakt als je gebruik maakt van modalDialogs, welke een vaste returnwaarde kunnen hebbne.

[ Voor 78% gewijzigd door Bosmonster op 02-05-2003 16:34 ]


Verwijderd

Topicstarter
Ok, dat zou mooi kunnen ja. Helaas heb ik op dit moment niet zoveel zin om alle code uit die popup om te gooien naar een modaldialog. Daarnaast is het ook geen optie voor mij, aangezien men dan nog steeds de focus kan veranderen.

Ik kan de popup altijd on top houden door onBlur="self.focus" te doen natuurlijk. Probleem is dan dat ik niets meer in het form in de popup kan typen. Dit kan ik voor bepaalde input types wel oplossen.

Zo heb ik voor input type=file een onMouseDown die de focus temporary uitzet. Nu heb ik ook een input type=text. Deze moet op onFocus=document.all.focus.value="nee" zetten en op onBlur weer document.all.focus.value="ja" zetten. Dit werkt helaas niet. Wat doe ik fout?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script language=javascript>
function checkFocus()
{
    if(document.all.focus.value == "ja"
   {
      self.focus();
   }
   else
   {
      document.all.focus="ja"
   }
}

<html>
<body onBlur="checkFocus()">
<form .....>
<input type="hidden" name="focus" value="ja">
<input type="file" onMouseDown="javascript: document.all.focus.value='nee'">
<input type="text" onBlur="javascript: document.all.focus.value='nee'">
</form>
</body>
</html>


Iemand suggesties hoe ik dit kan oplossen?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

mmm, ik vat 'm geloof ik nog niet helemaal. Moet het zoiets worden als de smiley/ubb popup hier?

[ Voor 3% gewijzigd door crisp op 06-05-2003 16:00 ]

Intentionally left blank


Verwijderd

Topicstarter
Nee, die kan ik namelijk gewoon wegdrukken. Om even terug te gaan naar de basics. Wat ik wil is de cursorpositie onthouden van de editor, zodat ik op die plek later een plaatje kan maken.

Wat ik namelijk later in de popup doe is:
var pointer = window.opener.foo.document.selection.createRange();

Hiermee heb ik een pointer gemaakt naar de plek waar de cursor staat. Probleem is dat deze regel pas in een later stadium wordt uitgevoerd en dat men in de tussentijd de cursor in het achterste scherm al weer verplaatst kan hebben. Wanneer ik dan pointer.pasteHTML() doe, dan wordt de code op de verkeerde plek geplakt.

Wat ook een oplossing zou kunnen zijn, is op het moment dat ik window.open heb gedaan. Meteen in de popup dan var pointer = window.opener.foo.document.selection.createRange(); te doen.

Nu heb ik de cursorplek ik een variabele en moet ik deze alleen nog kunnen passen naar de uiteindelijke pagina die het plaatje plaatst. Kan dit?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Verwijderd schreef op 06 May 2003 @ 15:57:
Ok, dat zou mooi kunnen ja. Helaas heb ik op dit moment niet zoveel zin om alle code uit die popup om te gooien naar een modaldialog. Daarnaast is het ook geen optie voor mij, aangezien men dan nog steeds de focus kan veranderen.
Tja.. ik zeg je net.. bij een modalDialog kunnen mensen de focus dus niet veranderen, omdat ze het venster niet uitkomen. Je kunt niets meer doen in het originele venster tot je modal gesloten is.

Met een gewone popup zul je dit nooit te nimmer bereiken zonder krakkemikkege omwegen.

[ Voor 8% gewijzigd door Bosmonster op 06-05-2003 17:35 ]

Pagina: 1