Avatar billede noex Nybegynder
14. februar 2001 - 11:42 Der er 15 kommentarer og
1 løsning

Capture events i NS6

Jeg har en side med et <input type=\"text\" name=\"textEditMaerke\"> felt. Fra en knap på denne side kan man åbne et popup vindue, der indeholder en tabel. I tabellen kan man klikke på indholdet af en celle, hvorefter værdien af cellen skal returneres til textfeltet i siden, som åbnede popupvinduet. Min kode i popup vinduet, ser således ud (det essentielle):

<script language=\"JavaScript1.2\">

function updateParentWindow(){   
  indhold=event.srcElement.innerHTML;   
  opener.document.all.item(\'textEditMaerke\').value=indhold;
  self.close();}

</script>

<body> 
  <table onClick=\"updateParentWindow()\">       
    <tr><td>valg1</td></tr>
    <tr><td>valg2</td></tr>
  </table> 
</body>

Det virker OK i IE, men hvordan får man det til at virke i NS6?

Eller er det mon grebet helt forkert an?
14. februar 2001 - 12:40 #1
Prøv
  opener.document.getElementById(\'textEditMaerke\')value=indhold;
eller
  opener.document.getElementById(\"textEditMaerke\")value=indhold;

det skulle virke i NS6 og IE
Avatar billede brain Nybegynder
14. februar 2001 - 12:50 #2
fra netscape.com i JS1.2 refererence:

onClick
Executes JavaScript code when a click event occurs; that is, when an object on a form is clicked. (A Click event is a combination of the MouseDown and MouseUp events).
Event handler for
Button, document, Checkbox, Link, Radio, Reset, Submit

Implemented in
Navigator 2.0
Navigator 3.0: added the ability to return false to cancel the action associated with a click event


Her ser det ud som om at onClick ikke er event for TABLE. Har du checket med alert om eventet fyrer?
Avatar billede noex Nybegynder
14. februar 2001 - 13:46 #3
Jeg har nu ændret funktionen som def foreslog:

<script language=\"JavaScript1.2\">

function updateParentWindow(){   
  indhold=event.srcElement.innerHTML;   
  opener.document.getElementById(\'textEditMaerke\').value=indhold;
  self.close();}

</script>

<body> 
  <table onClick=\"updateParentWindow()\">       
    <tr><td>valg1</td></tr>
    <tr><td>valg2</td></tr>
  </table> 
</body>

Jeg kan godt se, at dette var nødvendigt for at NS6 forstår den linie. Ja - dette virker både i IE5.5 og NS6, men problemet må ligge i linien:

indhold=event.srcElement.innerHTML;   

Jeg antager, at man ikke kan bruge srcElement i NS6. Men hvad gør man så i stedet? suk!
Avatar billede noex Nybegynder
14. februar 2001 - 13:52 #4
Brain skrev : Har du checket med alert om eventet fyrer?

Ja - det fyrer OK. Jeg kommer godt nok ind i funktionen updateParentWindow().
14. februar 2001 - 15:06 #5
noex>> Det ser ud som at srcElement virker i NS6, jeg har rettet i dit script så det kan afvikles på en side(test)

<script language=\"JavaScript1.2\">

function updateParentWindow(){   
  indhold=event.srcElement.innerHTML;   
  document.getElementById(\'textEditMaerke\').value=indhold;
  //self.close();
  alert(indhold)
  }

</script>

<body> 
  <table onClick=\"updateParentWindow()\" id=\"textEditMaerke\">       
    <tr><td>valg1</td></tr>
    <tr><td>valg2</td></tr>
  </table> 
</body>
14. februar 2001 - 15:16 #6
Sorry - det virker minus
Avatar billede noex Nybegynder
14. februar 2001 - 15:59 #7
Damn......

Det må altså være denne linie, hvor det går galt for NS6:

indhold=event.srcElement.innerHTML;

Hvad er alternativet?
14. februar 2001 - 16:01 #8
Måske CreateRange ???
Avatar billede noex Nybegynder
15. februar 2001 - 08:43 #9
Def > Måske CreateRange 

hmmm...hvad præcis forestiller du dig? Prøver at fifle lidt med CreateRange method
Avatar billede noex Nybegynder
15. februar 2001 - 09:06 #10
def > Det ser ud som at srcElement virker i NS6

Hvordan har du konstateret dette? Jeg synes stadig, at det må være her det går galt !?!

I øvrigt..med createRange kan man kun lave et textRange objekt ud fra følgende element typer: body, button, input (type=\"text\") samt textarea. Jeg kan ikke se, hvad du mener, jeg kan bruge metoden til? :-)
15. februar 2001 - 09:12 #11
noex>> Sorry, hvis jeg sendte dig ud på et vildspor, jeg er våd bag ørene når det kommer til NS6 og har ikke rigtig fundet noget fyldesgørende dokumentation til denne.
Avatar billede noex Nybegynder
15. februar 2001 - 09:17 #12
Ingen grund til at undskylde. Det er jo med at tænke kreativt. Håber blot, at jeg snart får skidtet til at virke. Men som jeg nævnte tidligere: Hvordan ved du, at srcElement virker i NS? Så vidt jeg kan se, får variablen \"indhold\" aldrig nogen værdi i sætningen:

indhold=event.srcElement.innerHTML;

..og da innerHTML understøttes af NS6, må det jo være srcElement, som fucker op? ...oder was?
15. februar 2001 - 09:51 #13
Jeg kan íkke se at srcElement er understøttet af NS6, men jeg har fundet noget der virker i begge browsere:

http://javascript.internet.com/forms/dynamic-table.html

Om det er getElementsByTagName.firstChild.nodeValue eller hvad katten der gør det, ved jeg ikke lige nu;-)
Avatar billede noex Nybegynder
15. februar 2001 - 09:53 #14
Jeg har fundet ud af, at event objektet i NS og IE ikke har de samme properties (ikke at det bør komme bag på nogen), og at event objektet i NS IIKE har en property, som hedder srcElement, men derimod en property, som hedder target, dvs. event.target

\"event.target : the object on which the event occurred\"

..altså nøjagtig samme funktion, som srcElement har i IE\'s implementation af event objektet.

Herefter tænkte jeg, at gåden var løst, og jeg blot kunne skrive:

indhold=event.target.innerHTML;

..for herved at tildele variablen \"indhold\" den innerHTML-værdi, som <TD>\'en har. Men ak! Det virker sgu\' stadig ikke. Overser jeg noget? Eller syntaksfejl???
Avatar billede noex Nybegynder
15. februar 2001 - 16:00 #15
Hej def: Jeg kan ikke få det til at virke, så alternativet må blive følgende: En eventhandler på TD\'erne, som sender et TD objekt med op til funktionen. Med TD\'en i hånden kan jeg lave en innerHTML på den. Det virker i begge browsere!

Du skal have \"half the points\" for din indsats alligevel. Tak for inspirationen!
_______________________________________________

<script language=\"JavaScript1.2\">

function updateParentWindow(TDobj)
{   
  indhold=TDobj.innerHTML;   
  opener.document.getElementById(\'textEditMaerke\').value=indhold;
  self.close();
}

<body> 
  <table>
    <tr><td onClick=\"updateParentWindow(this)\">valg1</td></tr>
    <tr><td onClick=\"updateParentWindow(this)\">valg2</td></tr>
  </table> 
</body>
Avatar billede noex Nybegynder
15. februar 2001 - 16:04 #16
U got em all i guess :-)
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Informationssikkerhedsofficer til Akkreditering & Compliance

Politiets Efterretningstjeneste

Fagkoordinator til Netværkssektionen i PET

Capgemini Danmark A/S

Microsoft AI Solution Architect

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior specialister (DevSecOps) til Forsvarets nye Digitale Backbone