Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] script staat wel in bron, maar wordt niet uitgevoerd

Pagina: 1
Acties:

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 22:02
Op mijn phpBB 3.0.0 forum heb ik het volgende script gebruikt om images te resizen:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<script type="text/javascript"> 
window.onload = resizeimg; 
function resizeimg() 
{ 
   if (document.getElementsByTagName) 
   { 
      var img, imgs = document.getElementsByTagName('IMG'), i = imgs.length; 
      while (i--) 
      { 
         img = imgs[i]; 
         if (img.width > 500 && img.src != "http://www.swordfactsbenelux.nl/forums/styles/sfb/imageset/site_logo.gif") 
         { 
            img.style.width = '500px'; 
            img.style.border = '1px dashed'; 
            img.onclick = function() { 
                var pop = window.open(this.src, 'fullscale', 'width=1000,height=700,scrollbars=1,resizable=1'); 
                pop.focus(); 
              } 
            img.style.cursor = 'pointer'; 
            img.title = 'Klik op de afbeelding om hem op ware grootte te bekijken'; 
            if (img.parentNode.nodeName == 'A') 
            { 
              img.parentNode.onclick = function() { return false; } 
            } 
         } 
      } 
   } 
} 
</script> 

Werkt perfect als je een topic bekijkt, maar bij het antwoorden in een bericht, worden de images in voorgaande berichten in dat topic niet geresized. Ook als je op voorbeeld klikt om je conceptbericht met een image >500px te bekijken, wordt die niet geresized. De opmaak wordt dan uiteen gerukt (vooral in IE 6 lelijk, FF gaat er nog redelijk goed mee om).

Ik heb bovenstaand script in overall_header staan, het komt ook netjes in de bron naar voren, maar wordt dus niet uitgevoerd in posting.php om de een of andere reden.

Zie hier voor een voorbeeld. Inloggen kan met user Test en pass test123.

Het lijkt mij dat de code toch goed is, maar waar zou het dan aan kunnen liggen?

Tjolk is lekker. overal en altijd.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 27-11 13:05

Janoz

Moderator Devschuur®

!litemod

Voegt phpbb op die pagina's misschien zelf al een onload functie toe waardoor die van jouw overschreven en dus niet aangeroepen wordt?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 22:02
Goeie, moet ik even kijken. Dat zou dan in waarschijnlijk in posting.php zijn, niet in de templatefiles gok ik. Ik zie er alleen zo gauw de reden niet van...

Edit: er wordt ook nog het een en ander geïnclude, wordt een aardige zoektocht dus.

[ Voor 21% gewijzigd door Tjolk op 20-12-2007 10:17 ]

Tjolk is lekker. overal en altijd.


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je external JS heeft idd ook al een
JavaScript:
1
window.onload = initInsertions;
:)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 22:02
Ah, dankje!

Volgende vraag is dan: hoe omzeil je zoiets het beste/netste?
Bij die onload ook voornoemde code opnemen, of kan ik die andere onload vermijden?

Tjolk is lekker. overal en altijd.


  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 22:02
Zelf zit ik natuurlijk ook niet stil, en inmiddels heb ik het gevonden. De window.onload heb ik weggehaald, had toch geen zin. In plaats daarvan heb ik de body-tag veranderd in:
code:
1
<body onmouseover="resizeimg()" class="{S_CONTENT_DIRECTION}">

(die class stond er al)

Nu werkt het!

Bedankt overigens voor de tips, want ik had anders echt nog een flinke slag in de rondte gezocht.

Tjolk is lekker. overal en altijd.


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
volgens mij kun je met attachEvent (en equivalenten voor andere browsers) een onload toevoegen als er al een onload is...

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 22:02
Edwardvb schreef op vrijdag 21 december 2007 @ 08:51:
volgens mij kun je met attachEvent (en equivalenten voor andere browsers) een onload toevoegen als er al een onload is...
AttachEvent? Die ken ik niet, en wat zijn de equivalenten voor andere browsers in deze dan?

Da's namelijk best interessant, want hoewel ik het dus werkend dacht te hebben, zit er in IE6 nog steeds een probleem. :?
Wéér alleen bij het antwoorden. Nu gaat het bekijken van het voorbeeld wel goed, maar de berichten in de topic_review niet. En het stomme is, daar worden ze wel geresized. De opmaak wordt echter wel verstoord.

Beetje onduidelijk verhaal ben ik bang, maar dit is een voorbeeldtopic en inloggen om te reageren kan met user Test en pass test123.

De code die ik nu heb:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script type="text/javascript"> 
function resizeimg() 
{ 
   if (document.getElementsByTagName) 
   { 
      var img, imgs = document.getElementsByTagName('IMG'), i = imgs.length; 
      while (i--) 
      { 
         img = imgs[i]; 
         if (img.width > 500 && img.src != "http://www.swordfactsbenelux.nl/forums/styles/sfb/imageset/site_logo.gif") 
         { 
            img.style.width = '500px'; 
            img.style.border = '1px dashed'; 
            img.onclick = function() { 
                var pop = window.open(this.src, 'fullscale', 'width=1000,height=700,scrollbars=1,resizable=1'); 
                pop.focus(); 
              } 
            img.style.cursor = 'pointer'; 
            img.title = 'Klik op de afbeelding om hem op ware grootte te bekijken'; 
            if (img.parentNode.nodeName == 'A') 
            { 
              img.parentNode.onclick = function() { return false; } 
            } 
         } 
      } 
   } 
} 
</script> 

en aanroepen in de body:
HTML:
1
<body onmouseover="resizeimg()" class="ltr">

Tjolk is lekker. overal en altijd.


  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 22:02
Hmm... Ik snap het niet zo. Zover ik het nu begrijp is het, allééén bij IE6, en dan allééén bij posting.php als volgt:
  1. Pagina wordt geladen, code+template
  2. Gegevens uit database worden opgehaald
  3. Te grote image op pagina --> template wordt opgerekt om te laten passen
  4. Muis is op pagina --> resizefunctie wordt uitgevoerd
  5. Template blijft opgerekt in plaats van aan te passen
Maar waarom? :? Op alle andere pagina's gaat het wel goed...

Tjolk is lekker. overal en altijd.


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 20-11 21:40

Not Pingu

Dumbass ex machina

Staat je script in de page header? Controleer of je JS functie in de response boven de event binding staat. Het kan nl. op grotere pagina's voorkomen dat je JS functie nog niet naar de client verstuurd is voordat je 'm aan een event hangt.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 22:02
Jep, script staat in de header, direct voor </head> en wordt aangeroepen in de <body>-tag. De functie wordt ook netjes uitgevoerd, alleen past de template zich er niet op meer op aan.
Inmiddels is het probleem dus niet meer dat het script niet wordt uitgevoerd, maar dat de template bij IE6 problemen geeft. Misschien moet ik voor de duidelijkheid eens een nieuw topic starten, of is dat niet volgens het beleid hier? (mods?)

Tjolk is lekker. overal en altijd.


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 27-11 10:50

_Thanatos_

Ja, en kaal

Hele simpele oplossing toch?

JavaScript:
1
2
3
4
5
var oldonload = window.onload;
window.onload = function() {
   oldonload();
   //Doe je ding hier
};

[ Voor 3% gewijzigd door _Thanatos_ op 23-12-2007 00:26 ]

日本!🎌


  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 22:02
Dat onload verhaal is opgelost, inmiddels ben ik ook achter de template "bug": een width van 100% omzetten in auto doet het trucje. Levert alleen nog een erg smalle scrollbar op in IE6, maar daar doen ze het maar mee...
Probleem lijkt dus opgelost! :D

Tjolk is lekker. overal en altijd.

Pagina: 1