webForumDet fria alternativet

focus i iframe(designmode)

14 svar · 369 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 144 inlägg
#1
  1. Jag kör en iframe med designmode som jag försöker få focus på med ett onloadevent men inget händer.
    Går det över huvud taget?
<body onload="document.getElementById('iView').focus();">
...
<iframe id="iView"></iframe>
  1. Om jag skall öppna en befintlig sida i iframen(designmode) med fso så måste jag väl på någe vis först skriva in hela filen i en vanlig textarea och sedan limma in den i iframen i sin tur. Eller?
PepeJeriaMedlem sedan feb. 2003774 inlägg
#2
  1. Problemet är att onload på body:n triggas före iframen laddat klart. Testa detta
<body onload="alert('body');">
<iframe src="http://www.aftonbladet.se" onload="alert('iframe');"></iframe>

Så varför inte sätta focus:et i själva sidan i iframe:n?

  1. Förstår inte riktigt, men du sätter väl en src på din iframe med sidan som har en textarea?
Jesper TMedlem sedan nov. 20017 144 inlägg
#3
  1. Det är ingen sida, iframen funkar som en editor med designmode. Det är en WYSIWYG-editor.

  2. Har ingen src.

PepeJeriaMedlem sedan feb. 2003774 inlägg
#4

Så vad har du i Iframe:n? Vad ska vara editerbar om du inte har någon content?

Jesper TMedlem sedan nov. 20017 144 inlägg
#5

I iframen så skall den editerbara sidan öppnas, men jag fattar inte riktigt vad du menar.

Jesper TMedlem sedan nov. 20017 144 inlägg
#6

Ok, man verkar kunna sätta sidans adress i iframens src. Det var ju bra.
Jag kan också sätta onload="this.focus()" i iframen för att få markören på plats.
Men ett problem kvarstår. Om jag inte har klickat i iframen och te.x. försöker pasta in dagens datum så lägger sig datumet utanför iframen, högst upp på sidan och inte i iframen. Även fast markören blinkar i iframen.

<a href="javascript:void(0);" onClick="iView.document.selection.createRange().pasteHTML('2003-05-30')">Dagens datum</a>

Hur kan man fixa det?

Jesper TMedlem sedan nov. 20017 144 inlägg
#7

Undrar fortfarande.

Jesper TMedlem sedan nov. 20017 144 inlägg
#8

....Ingen som vet?

PepeJeriaMedlem sedan feb. 2003774 inlägg
#9

Tror att du får skicka med mer kod för att kunna förstå detta. Verkar dock som om du refererar fel och får resultatet på själva huvudsidan o inte i iframe:n?

När du är i själva Iframe:n behöver du inte referera till den.

Jesper TMedlem sedan nov. 20017 144 inlägg
#10

Ja det är inte så märkvärdigt men här kommer principen i alle fall.

<body onload="iView.document.designMode = 'On';">
<iframe name="iView" width="400" height="100" id="iView"></iframe>
<a href="javascript:void(0);" onClick="iView.document.selection.createRange().pasteHTML('2003-05-30')">Dagens datum</a>
</body>
Jesper TMedlem sedan nov. 20017 144 inlägg
#11

Glömde att skriva att jag även har iView.focus(); i "body onload":

onload="iView.document.designMode = 'On';iView.focus();"

Då ser ni att även fast markören blinkar i iframen så lägger sig datumet utanför.

PepeJeriaMedlem sedan feb. 2003774 inlägg
#12
<body onload="iView.document.designMode = 'On'; iView.focus();">
<iframe id="iView" width="400" height="100"></iframe>
<a href="#" onClick="document.getElementById('iView').contentWindow.document.body.innerHTML = '2003-05-30'; return false;">Dagens datum</a>
</body>
Jesper TMedlem sedan nov. 20017 144 inlägg
#13

Det är mindre lyckat för då raderas allt jag skrivit in när jag trycker på "länken".

dectgapMedlem sedan sep. 20021 655 inlägg
#14

Ändra det till att du bara lägger till då:

<body onload="iView.document.designMode = 'On'; iView.focus();">
<iframe id="iView" width="400" height="100"></iframe>
<a href="#" onClick="document.getElementById('iView').contentWindow.document.body.innerHTML += '2003-05-30'; return false;">Dagens datum</a>
</body>
PepeJeriaMedlem sedan feb. 2003774 inlägg
#15

Eller kör med pasteHTML, för när man kör med
innerHTML += "sträng"

så är det rätt långsamt (ej bra för performance)

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)