Avatar billede ss Nybegynder
16. april 2006 - 18:09 Der er 38 kommentarer og
2 løsninger

OnKeyDown og OnClick i iframe-indhold

Hej,
Hvordan får jeg OnClick og OnKeyDown-events på iframeindholdet, altså således at jeg eksempelvis får en alert() hvergang jeg klikker et sted i iframet, eller jeg trykker en tast ned.

Jeg har prøvet lidt forskelligt men altsammen uden held.

På forhånd tak!
Avatar billede ss Nybegynder
16. april 2006 - 18:10 #1
Det skal lige siges at jeg har designMode='on' på iframet og den er en del af en WYSIWYG-editor.
Avatar billede webstuff Nybegynder
16. april 2006 - 18:26 #2
Hvis det er en wysiwyg så kan det da ikke være skide pragtisk at der kommer en alert hver gang man trykker en tast ned? ;o)

Ej, men jeg går ud fra at du har prøvet:
<iframe onClick="alert('kuk-kuk');"></iframe> ??
Avatar billede ss Nybegynder
16. april 2006 - 18:48 #3
Nej, jeg ved godt det ikke er praktisk med alert() men det er heller ikke en alert det skal bruges til. Jeg skal køre en mere eller mindre usynlig funktion, så det vil ikke genere brugeren af editoren.

Og ja jeg har prøvet dit forslag, uden held.
Avatar billede mclemens Nybegynder
16. april 2006 - 19:10 #4
hvad med denne?

<iframe onload="(document.all)?content.document.body.onclick=function(){alert('Haha');}:contentDocument.body.onclick=function(){alert('Hehe');};" id="content"></iframe>
Avatar billede mclemens Nybegynder
16. april 2006 - 19:12 #5
erstat alert('Haha'); eller Hehe med onkald til functionen f.eks.:

onload="(document.all)?content.document.body.onclick=function(){mintest();} : contentDocument.body.onclick=function(){mintest();}"
Avatar billede mclemens Nybegynder
16. april 2006 - 19:12 #6
onkald -> kald
Avatar billede mclemens Nybegynder
16. april 2006 - 19:17 #7
kan måske også laves med en onclick :P
onclick="function(){mintest();}"
Avatar billede ss Nybegynder
16. april 2006 - 19:29 #8
DU ER EN SAND GURU! Det virker!
Bare lige én ting.
Det virker tilsyneladende ikke i FF.

Kan du hjælpe?
Avatar billede ss Nybegynder
16. april 2006 - 19:29 #9
Jeg har kun forsøgt med dit første eksempel.
Avatar billede mclemens Nybegynder
16. april 2006 - 19:38 #10
jeg kan da lige prøve lidt...
Avatar billede ss Nybegynder
16. april 2006 - 19:39 #11
Ville være perfekt!
Avatar billede mclemens Nybegynder
16. april 2006 - 19:47 #12
sådan?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
<!--
function mintest(){
alert("1");
}
//-->
</script>

</head>

<body>

<iframe onload="if(document.all)content.document.body.onclick=function(){mintest();};else contentDocument.body.onclick=function(){mintest();};" src="1.html" id="content"></iframe>
</body></html>
Avatar billede mclemens Nybegynder
16. april 2006 - 19:48 #13
tog det herfra... men der røg lidt formeget af min kode :P
http://www.eksperten.dk/spm/702689#rid6206968
Avatar billede ss Nybegynder
16. april 2006 - 19:55 #14
Det du har skrevet virker stadig ikke hos mig..Altså i mit FF
Avatar billede mclemens Nybegynder
16. april 2006 - 20:07 #15
hmm, den virker fint her - har du et link ... jeg tror det kan være noget doctype, xhtml markup eller andet der kan gøre det ikke virker eller evt. et lille kort eksempel postet her så jeg har noget at teste på...


her er min 1.html...

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title></head>
<style type="text/css">
html,body{width:100%;height:100%;margin:0px;padding:0px;}
</style>
<body>

<div id="cont">
a
</div>

</body></html>
Avatar billede mclemens Nybegynder
16. april 2006 - 20:08 #16
hmm, den virker fint her -> hmm, den virker fint her i FF og IE , har ikke checekt opera og netscape men det burde også virke der... skal nok checke dem bagefter :)
Avatar billede ss Nybegynder
16. april 2006 - 20:24 #17
Jeg prøver med den her kode:

<iframe src='blank.htm' id='editor' frameborder='0' OnLoad="if(document.all)editor.document.body.onclick=function(){alert('Hehe');};else contentDocument.body.onclick=function(){alert('Hehe');};"></iframe>

blank.htm indeholder ikke noget der har med det her script at gøre.

Og har jeg prøvet at indsætte din Doctype i både hovedsiden og blank, uden held.
Avatar billede mclemens Nybegynder
16. april 2006 - 20:56 #18
Hvis jeg bruger mine test filer virker det i IE 6.0 og FF1.5 - men, hvis det dokument du forsøger at bruge det på ikke validerer via. w3c er det ikke sikkert at koden virker... før det bliver rettet til måske...

- og hvis det er på et domæne der ligger på en anden server end den man er på virker det måske heller ikke... jeg har svær ved at fejlfinde en fejl jeg ikke kan se :/ det er ikke sådan at du har et eksempel der ikke virker? den iframe src du prøver virker fint her...
Avatar billede mclemens Nybegynder
16. april 2006 - 20:56 #19
før det bliver rettet til måske... -> før scriptet bliver rettet til måske...
Avatar billede ss Nybegynder
16. april 2006 - 22:38 #20
Det underlige er at jeg ikke kan få det til at virke, selv med dine testfiler.
Jeg kan ikke få den til at læse 1.html i ff og onclick virker heller ikke.
Altså iframet er helt blank selvom jeg eksempelvis prøver at skrive noget i body i 1.html eller sætte en rød baggrund på :S. Og skriver jeg direkte sti til 1.html virker den fint med bagrund og det hele.
Men det er altså kun i FF at den opfører sig så underligt.
Avatar billede mclemens Nybegynder
16. april 2006 - 22:42 #21
hvad ff version kører du?
- den laver slet ikke de numre med mig...???
Avatar billede ss Nybegynder
16. april 2006 - 22:45 #22
Hvor ser jeg versionen?
(versionen er i forvejen lidt halvunderlig, tabeller skifter bredde ved reload og sådan noget :S)
Avatar billede mclemens Nybegynder
16. april 2006 - 22:54 #23
menubaren, højre side -> hjælp -> om mozilla firefox
... og helt nede i bunden højre hjørne...

(versionen er i forvejen lidt halvunderlig, tabeller skifter bredde ved reload og sådan noget :S)
-> lyder som en updater... -> hjælp -> tjek for opdateringer...
Avatar billede ss Nybegynder
16. april 2006 - 23:00 #24
Okay, har updatet nu og nu kan den godt finde iframe-filen og onclick-kommandoen virker også i dine testfiler. Men ikke i min editor.
Hvad kan det skyldes? At den ikke er wc3-valid?

[Er ikke så glad for at vise editor-koden frem og den er også meget lang]
Avatar billede mclemens Nybegynder
16. april 2006 - 23:10 #25
muligvis, muligvis ikker...
- jeg har lige lavet noget iframe height sjov med samme kode... og her var problemet at html tags ikke var sat ordentligt sammen - men når vi snakker editor afhænger det i bund og grund af hvordan editoren virker...

- der kan være noget append og remove dom der sletter body (den tvivler jeg lidt på)...
- der kan være noget tildeling til body f.eks. onload eller window.onload der skaber problemer...
- der kan være noget eventcapture der disabler det andet...


[Er ikke så glad for at vise editor-koden frem og den er også meget lang]
- der er rigtig mange årsager til at det måske ikke virker den transperant gif er dog ikke en af dem har testet med editoren i den anden tråd og den virkede også ok ... jeg kigger på om jeg kan fremkalde nogle problemer - hvis det er tilfældet vender jeg tilbage
Avatar billede mclemens Nybegynder
16. april 2006 - 23:10 #26
ikker... -> ikke
Avatar billede ss Nybegynder
16. april 2006 - 23:14 #27
Jeg har lokaliseret problemet.
designMode='on';
Definere jeg designMode som 'on' kommer popuppen ikke men jeg kan redigere iframe-teksten.

definerer jeg ikke designMode får jeg popuppen men jeg kan ikke redigere
Avatar billede mclemens Nybegynder
16. april 2006 - 23:19 #28
kender ikke designmode, men rart jeg ikke behøver lede så :)
- designmode må så være en sikkerhedstildeling ... :)
Avatar billede ss Nybegynder
16. april 2006 - 23:20 #29
En sikkerhedstildeling?
Har du et forslag til hvordan jeg løser problemet?
Avatar billede mclemens Nybegynder
16. april 2006 - 23:21 #30
undskyld ulejligheden så... men vi fik da opdateret din FF :D ... ved ikke om jeg kan scripte uden om designMode... :/ så skal jeg nok surfe først og eksperimentere i et stykke tid...
Avatar billede mclemens Nybegynder
16. april 2006 - 23:22 #31
hov update
[ En sikkerhedstildeling? ]
- ved det ikke helt men det må vel være noget i den stil???

[ Har du et forslag til hvordan jeg løser problemet? ]
- ikke lige p.t.
Avatar billede mclemens Nybegynder
16. april 2006 - 23:23 #32
- ved det ikke helt men det må vel være noget i den stil???
... altså så man ikke kan scripte inde i framen eller sådan noget ...
Avatar billede ss Nybegynder
16. april 2006 - 23:24 #33
Okay, ellers rigtig mange tak for hjælpen.
Smid et svar så får du nogle point for dit store besvær!
Avatar billede mclemens Nybegynder
16. april 2006 - 23:26 #34
hehe, kast en 20 :)
Avatar billede mclemens Nybegynder
16. april 2006 - 23:29 #35
- tak for point :)
Avatar billede ss Nybegynder
16. april 2006 - 23:55 #36
Det var så lidt.
Avatar billede mclemens Nybegynder
16. april 2006 - 23:55 #37
[ [ En sikkerhedstildeling? ]
- ved det ikke helt men det må vel være noget i den stil??? ]
- sikke noget vrøvl... vidste ikke hvad designmode var, har
set det nu... men det er jo ikke noget sikkerhedsmæssigt :D
(mangler stadig lige at finde en løsning ... hvis jeg kan...)
Avatar billede mclemens Nybegynder
16. april 2006 - 23:56 #38
hehe så ikke du havde skrevet :D
Avatar billede ss Nybegynder
17. april 2006 - 00:05 #39
Har fået løst det.
Fandt en artikel på nettet der omhandlede præcis hvad jeg ledte efter. Efter at have bakset i lang tid fik jeg lavet en funktion der virker:

function runEvent(){
if(document.attachEvent){
editor.document.attachEvent('onclick', function(){alert('funktionen');});
editor.document.attachEvent('onkeyup', function(){alert('funktionen');});
} else if(document.addEventListener) {
document.getElementById('editor').contentWindow.document.addEventListener('click', function(){alert('funktionen');}, false);
document.getElementById('editor').contentWindow.document.addEventListener('keyup', function(){alert('funktionen');}, false);
}
}

Funktionen er sat som OnLoad="runEvent()" på iframet.
Ellers mange tak for hjælpen! Lækkert med sådan nogle der ikke giver op.
Avatar billede mclemens Nybegynder
17. april 2006 - 00:19 #40
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