Avatar billede Slettet bruger
25. juli 2003 - 02:10 Der er 28 kommentarer og
1 løsning

Inkludering af andet "javascript" ved onclick

Nedenstående burde være selvforklarende. Jeg vil gerne have det sidste eksempel til at virke.

Således at mit PHP script kaldes, når jeg trykker på teksten i <div> - og at der iøvrigt intet sker ellers, med siden man er på.

--------------------------------------------------------
Virker som det skal. reg.phtml kaldes "i baggrunden":
--------------------------------------------------------
<html>
<body>

<script language="javascript" type="text/javascript">
    function register_html_banner_click(bid, sid, position) {
        document.write("<script language='javascript' type='text/javascript' src='reg.phtml?bid=" + bid + "&sid=" + sid + "&position=" + position + "'></");
        document.write("script>");
        return false;
    }
</script>

<div onclick='return register_html_banner_click(4, 5, 6);'>asdasdasd</div>

</body>
</html>

--------------------------------------------------------
Virker IKKE som det skal. reg.phtml kaldes med siden "loader forevigt":
--------------------------------------------------------
<html>
<body>

<script language="javascript" type="text/javascript">
    function register_html_banner_click(bid, sid, position) {
        document.write("<script language='javascript' type='text/javascript' src='reg.phtml?bid=" + bid + "&sid=" + sid + "&position=" + position + "'></");
        document.write("script>");
        return false;
    }
</script>

<div onclick='return register_html_banner_click(4, 5, 6);'>asdasdasd</div>

</body>
</html>
Avatar billede Slettet bruger
25. juli 2003 - 02:14 #1
Første eksempel skulle være:

--------------------------------------------------------
Virker som det skal. reg.phtml kaldes "i baggrunden":
--------------------------------------------------------
<html>
<body>

<script language="javascript" type="text/javascript">
    function register_html_banner_click(bid, sid, position) {
        document.write("<script language='javascript' type='text/javascript' src='reg.phtml?bid=" + bid + "&sid=" + sid + "&position=" + position + "'></");
        document.write("script>");
        return false;
    }
    register_html_banner_click(4, 5, 6);
</script>

<div>asdasdasd</div>

</body>
</html>
Avatar billede bearhugx Nybegynder
25. juli 2003 - 02:14 #2
øhhh .. måske er det bare mig, som ikke er selvforklarende - men hvad er lige forskellen på de to kode-eksempler ?
Avatar billede bearhugx Nybegynder
25. juli 2003 - 02:19 #3
forskellen er vel umiddelbart at dit "insertscript" bliver kaldt mens dokumentet stadigvæk er igang med at loade - hvorimod at der først bliver indsat et nyt <script>-element i dokumentet efter loadning er fædig i det andet eksempel...

Bruger du parametrene til at hente en specifik scriptfil ind - eller bruger du det bare til at sende nogle parametre til serveren uden at loade en ny side ind (for så har jeg en anden metode som virker...)
Avatar billede Slettet bruger
25. juli 2003 - 02:24 #4
Der skal bare sendes de variable til PHP scriptet (4, 5, 6).

Jeg vil gerne have DENNE metode til at virke - om muligt.

Og ikke løsningen med den transparente gif. Hvis det er den du vil forslå. Medmindre man kan gøre det sådan at uanset hvor mange gange man klikker, så er der placeret kun én eneste transparent gif på siden. Jeg vil altså undgå, at man klikker 1000 gange, og får 1000 små billeder.
Avatar billede bearhugx Nybegynder
25. juli 2003 - 02:31 #5
det er den med en img - men den er ikke transperent....

se her

<script type="text/javascript">
  function register_html_banner_click( x, y, z ) {
    document.getElementById("hiddenServerConduit").src = "reg.phtml?bid=" + bid + "&sid=" + sid + "&position=" + position;
  }
</script>
<body>
  <!-- følgende IMG vises ikke, men kan bruges til at sende params til server! -->
  <img id="hiddenServerConduit" style="display:none" src="" />

  <div onclick='return register_html_banner_click(4, 5, 6);'>asdasdasd</div>
</body>
Avatar billede bearhugx Nybegynder
25. juli 2003 - 02:36 #6
og der kommer kun denne usynlige img - den bruges hele tiden til at sende parameterne afsted - ikke på noget tidspunkt går scriptet ind og tilføjer nye IMG's - og så er den meget mindre fejlbehæftet end document.write metoden nogensinde vil blive :-)
Avatar billede Slettet bruger
25. juli 2003 - 02:38 #7
Det er fint. Men det skal virke i ihvertfald følgende IE, Opera og Netscape versioner:

IE (6.0): Ingen problemer.
Opera (7.11): Virker kun ved første klik.
Netscape (7.01): Virker slet ikke.
Avatar billede Slettet bruger
25. juli 2003 - 02:39 #8
Måske Opera skyldes noget cache, der kan løses ved at sende en random parameter med hver gang?

Men netscape virker det slet ikke.
Avatar billede bearhugx Nybegynder
25. juli 2003 - 02:42 #9
hmmm .. det burde ellers virke i dem alle - og især i NS... Det er regulær DOM programmering, jeg bruger :-/

Ang. NETSCAPE :
prøv lige at udkommentere kommandoen i register... funktionen og så indsæt følgende i stedet
  alert( document.getElementById("hiddenServerConduit") );
  alert( "*"+document.getElementById("hiddenServerConduit").src+"*" );

i den første skulle den gerne alerte "[object]" eller lign. -
og i den anden skulle den gerne alerte "**"

gør den det ?
Avatar billede Slettet bruger
25. juli 2003 - 02:44 #10
Jeps det gør den.

Men det er vel noget med den onclick handler i div tag'et at gøre, det ikke virker i netscape?
Avatar billede bearhugx Nybegynder
25. juli 2003 - 02:46 #11
måske -- prøv at lave det om til

<a href="#" onclick="onclick='return register_html_banner_click(4, 5, 6);'>asdasdasd</a>
Avatar billede bearhugx Nybegynder
25. juli 2003 - 02:48 #12
vent lige lidt -- hvis du kørte register...-funktionen med div-onclick fint nok i netscape- så er det jo ikke onclick-handleren, som der er noget i vejen med... :-(
Avatar billede Slettet bruger
25. juli 2003 - 02:53 #13
Nå nej - mig der sov.

Iøvrigt, Opera fejlen har jeg klaret med en random parameter.

Så nu er det bare netscape.
Avatar billede bearhugx Nybegynder
25. juli 2003 - 02:55 #14
jeps ... men der skal du nok spørge en anden ...  jeg har nemlig ikke så meget forstand på NS-finurligheder (desværre) .. og hvorfor NS (åbenbart) ikke tillader at tildele ny src værdi på et <img> element ved jeg ikke - men måske skal fejlen findes i den måde man i NS tilgår src-attributten på <img>-elementer.
Avatar billede Slettet bruger
25. juli 2003 - 03:09 #15
Mon ikke det fordi netscape ikke loader grafikken pga. style="display: none;".

Det tror jeg.
Avatar billede bearhugx Nybegynder
25. juli 2003 - 03:12 #16
nope... det bør den...

evt prøv at undlade style-tingen - godtnok vil du så få et rødt kryds der hvor du har placeret hiddenServerConduit-img'et - men så får du da testet om NS virkelig ser på display:none...
Avatar billede Slettet bruger
25. juli 2003 - 03:13 #17
Det gør den.
Avatar billede Slettet bruger
25. juli 2003 - 03:17 #18
Læg et svar, hvis du vil have point.
Avatar billede bearhugx Nybegynder
25. juli 2003 - 03:30 #19
^svar^

hvis du lige gider at lave en opsummering..

dvs. at det virker, men kun hvis img ikker er display:none  og at der bruges en rand() værdi for at forhindre cache ???

dvs. prøv <img id="hiddenServerConduit" width=0" height="0" src=""/> ved ikke om NS så stadig tegner et rødt kryds :-/ - ellers kan man prøve med iFrame . ja der er mange muligheder....
Avatar billede Slettet bruger
25. juli 2003 - 03:33 #20
Jeg har droppet display: hidden, da netscape ellers ikke loader grafikken. Og bruger en trans grafik (som php scriptet også retunerer/sender relevante headers osv., når det er færdigt). Opera cache er løst med rand værdi.

<html>

<head>
    <script type="text/javascript">
        function register_html_banner_click(bid, sid, position) {
            rand = Math.floor(Math.random() * 5000);
            document.getElementById("loader").setAttribute("src", "reg.phtml?bid=" + bid + "&sid=" + sid + "&position=" + position + "&rand=" + rand);
        }
    </script>
</head>

<body>
    <img id="loader" width="1" height="1" src="trans.gif" />
    <div onclick='register_html_banner_click(4, 5, 6);'>asddasd</div>
</body>

</html>
Avatar billede Slettet bruger
25. juli 2003 - 03:35 #21
Tak for indsatsen.
Avatar billede bearhugx Nybegynder
25. juli 2003 - 03:35 #22
du mener vel display:none .. der er ikke noget, som hedder display:hidden .. Der er derimod visibillity:hidden .- men det er en helt anden sag :-)
Avatar billede bearhugx Nybegynder
25. juli 2003 - 03:36 #23
ok ... glad for at du fik det til at funke :-)))
Avatar billede Slettet bruger
25. juli 2003 - 03:36 #24
Jaja.
Avatar billede bearhugx Nybegynder
25. juli 2003 - 03:37 #25
he he -- det må være tidspunket på døgnet :-)
Avatar billede Slettet bruger
25. juli 2003 - 03:38 #26
Det gjorde jeg faktisk ikke. Kan ikke bruge det til noget.

Meningen med det var at registrere klik på alt indhold der er mellem de 2 <div> tags. Men det ligner ikke det virker med flash objekter. Og hvis der startes og sluttes med <a> ...

Altså <div .....><a href='whatever'>Skal stadig registrere klik</a></div>

Tingene er den, at jeg _ikke_ kan ændre eller vide hvad der kommer mellem de 2 <divs> tags.
Avatar billede bearhugx Nybegynder
25. juli 2003 - 03:48 #27
ohh! .. jeg troede at du fik det til at virke (m/ transp gif.), og at du kunne bruge det...

At du ikke kan fange events på objekter (flash, appletter, SVG osv) kunne jeg have fortalt dig med det samme...

Du kan ikke opstille nogle retningslinier for, hvad content, der komme mellem de to divs (ved at mange bannerswaps osv. har sådanne retningslinier...)
Avatar billede Slettet bruger
25. juli 2003 - 03:51 #28
Jeg fik det til at virke. Men jeg kunne ikke bruge det :)

Det var bare et forsøg. Ved ikke alverden om DHTML ting. Hvad man kan/ikke kan. Så fik jeg i det mindste lært lidt.

Nu det sengetid. Bedre sent end aldrig.
Avatar billede bearhugx Nybegynder
25. juli 2003 - 03:52 #29
yeps .. er også på vej ind til dynen
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