Avatar billede mmolsen Nybegynder
21. juni 2003 - 13:00 Der er 13 kommentarer og
1 løsning

Event når table er markeret i min iframe (wysiwyg)

Hey eksperter.

Nogen der kan give mig en lille hånd her.

Jeg sidder og leger lidt med en wysiwyg editor, og kunne godt tænke mig at kunne lave en event, når man markere/selecter en table i iFramen.

Det der skal ske er at en div bliver synlig, hvor man så kan se værdierne i tabellen (border, width, hight osv.)

Men spørgsmålet er sådan set.

Hvordan får jeg en event (kalde en function) når en tabel markeres i iFramen??

Mvh. Morten Olsen
Avatar billede edutasia Nybegynder
21. juni 2003 - 13:55 #1
Du kan lave en generel onControlSelect-handler for hele dokumentet, dvs. en handler, der gennemløbes hver gang et element controlSelect'es i editoren (controlSelect er markering, hvor der kommer "håndtag" på elementer, f.eks. billeder, div'er og tabeller).

I handleren kan du checke, om event.srcElement.tagName = 'TABLE' og i så fald kalde din funktion. Altså noget à la det her (ikke testet):

<script>
function doCtrlSel() {
  var elm = event.srcElement;
  if (elm.tagName.toUpperCase() == 'TABLE') showTableProperties(elm);
}

function showTableProperties(elm) {
  alert(elm.outerHTML);
}
</script>

<body oncontrolselect="doCtrlSel()">
Avatar billede mmolsen Nybegynder
21. juni 2003 - 14:04 #2
Det ser lovende ud. Jeg kigger på det
Avatar billede mmolsen Nybegynder
21. juni 2003 - 14:10 #3
Det ser ikke ude til at funge med dit forslag

skal man ikke fortælle hvilken iFrame der skal "lyttes" på. Via iFramens ID ?
Avatar billede mmolsen Nybegynder
21. juni 2003 - 14:27 #4
har prøvet med:

<script>
function doCtrlSel() {
alert('test');
}

</script>

<body oncontrolselect="doCtrlSel()">

For at se om der skete noget når jeg markederede en table. Det gjorde der desværre ikke.
Avatar billede mmolsen Nybegynder
21. juni 2003 - 15:46 #5
Lader den lige stå lidt i håb om et forslag, eller tilføjelse til det allerede foreslået :)
Avatar billede edutasia Nybegynder
21. juni 2003 - 15:57 #6
Nu ved jeg ikke lige, hvordan dit system er skruet sammen, men noget i stil med:

  document.getElementById('idPaaIframe').document.body.onControlSelect = doCtrlSel;

burde kunne gøre det...
Avatar billede mmolsen Nybegynder
21. juni 2003 - 16:18 #7
Nej det fungede heller ikke.

Min editor er bygget op følgende:

<body onload="loadEditor()" >

<script>

function loadEditor(){
editbox.document.designMode="On";
editbox.focus;
}

En masse functioner til redigering af text og indsæt tabel m.m.

</script>

<iframe id="editbox"></iframe>

Er det noget man ect. kunne smide ind i functionen loadEditor() ??
Avatar billede edutasia Nybegynder
21. juni 2003 - 16:37 #8
Ja, det vil jeg tro - men jeg ved ikke præcist hvordan. Problemet med at bruge en iframe er, at man ikke bare kan sætte event-handlere på iframen, men skal have fat i document i iframen. Her er et par bud - håber et af dem virker:

function loadEditor(){
editbox.document.designMode="On";
editbox.document.body.oncontrolselect = doCtrlSel;
editbox.focus;
}

eller:

function loadEditor(){
editbox.document.designMode="On";
editbox.document.body.oncontrolselect = parent.doCtrlSel;
editbox.focus;
}
Avatar billede edutasia Nybegynder
21. juni 2003 - 17:12 #9
Testede lige... og det her virker:

// tilføjede editBox i doCtrlSel

function doCtrlSel() {
  var elm = editBox.event.srcElement;
  if (elm.tagName.toUpperCase() == 'TABLE') showTableProperties(elm);
}

function loadEditor(){
editbox.document.designMode="On";
editbox.document.oncontrolselect = doCtrlSel;
editbox.focus;
}
Avatar billede edutasia Nybegynder
21. juni 2003 - 17:16 #10
Beklager de mange "skud i tågen", men alle de editorer, jeg har lavet, har været baseret på contentEditable div'er, så jeg kender ikke lige de rigtige metoder til en iframe-baseret editor... der er tilsyneladende en hel del forskelle :)
Avatar billede mmolsen Nybegynder
21. juni 2003 - 17:17 #11
Det virker desværre ikke.

Syntes ellers det ligner nogle rigtig gode bud.

Ifølge MS dhtml sektion (http://msdn.microsoft.com/library/default.asp?url=/workshop/author/editing/editing_entry.asp)
står der nemlig også at oncontrolselect kan bruges i iframe.
Avatar billede mmolsen Nybegynder
21. juni 2003 - 17:22 #12
YES!!!!!

fand løsningen:

editbox.document.oncontrolselect = doCtrlSel;

skulle i min loadEditor()

Tak for hjælpen.

Kan du ikke lige lave et svar, uden din hjælp var jeg ikke nået dertil
Avatar billede mmolsen Nybegynder
21. juni 2003 - 17:24 #13
hehe var for hurtig der, du kom også med svaret :)

men svar lige igen
Avatar billede edutasia Nybegynder
21. juni 2003 - 17:38 #14
OK :)
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