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

[JS] stopPropagation() werkt niet

Pagina: 1
Acties:
  • 105 views sinds 30-01-2008
  • Reageer

  • Mei
  • Registratie: Juni 2005
  • Laatst online: 17-10-2024
HTML:
1
2
3
4
<div id="mark-size-slider">
    <div id="mark-size-indicator">
    </div>
</div>


JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var sSliderID='mark-size-slider';
var sIndicatorID='mark-size-indicator';

document.getElementById(sSliderID).onclick=sliderHandleClick;
document.getElementById(sIndicatorID).onmousedown=indicatorHandleMouseDown;

function indicatorHandleMouseDown()
{
    var event=(arguments[0]?arguments[0]:window.event);
    event.stopPropagation();
    iDiffX=event.clientX-this.offsetLeft;
    iIndicatorWidth=this.offsetWidth;
    iSliderWidth=document.getElementById(sSliderID).offsetWidth;
    iSliderLeft=document.getElementById(sSliderID).offsetLeft;
    document.body.onmousemove=indicatorHandleMouseMove;
    document.body.onmouseup=indicatorHandleMouseUp;
}


Het probleem: zodra ik de muisknop op mark-size-indicator loslaat, dan geldt dat als een click op mark-size-slider. Met stopPropagation() heb ik geprobeer dat af te vangen, maar de eventhandler voor de onclick wordt gewoon uitgevoerd in FF. Ik krijg verder geen JS errors en ik kan verder niet zien of ik nou iets verkeerd heb gedaan :S Heb al geprobeert te kijken of stopPropagation() goed uitgevoerd wordt door alert(event.stopPropagation()) te doen, maar die gaf 'undefined' terug. Lijkt me dat die functie dus niet bestaat voor event, terwijl event wél een event-object is (ook gecheckt met een alert()).

Zoals gewoonlijk de vraag of iemand anders kan zien wat er hier verkeerd gaat :P

  • user109731
  • Registratie: Maart 2004
  • Niet online
Mei schreef op maandag 20 augustus 2007 @ 10:56:
Heb al geprobeert te kijken of stopPropagation() goed uitgevoerd wordt door alert(event.stopPropagation()) te doen, maar die gaf 'undefined' terug. Lijkt me dat die functie dus niet bestaat voor event, terwijl event wél een event-object is (ook gecheckt met een alert()).
Je moet alert(event.stopPropagation) hebben... Nu voer je stopPropagation() uit, en alert je het resultaat van die functie :)

Verder zijn onclick, onmousedown, onmouseup, etc. afaik drie verschillende events. Als je in je onmousedown-handler stopPropagation() gebruikt, werkt dat enkel voor het onmousedown event. Onclick blijft gewoon omhoog bubblen :)

  • Mei
  • Registratie: Juni 2005
  • Laatst online: 17-10-2024
JanDM schreef op maandag 20 augustus 2007 @ 12:00:
[...]

Je moet alert(event.stopPropagation) hebben... Nu voer je stopPropagation() uit, en alert je het resultaat van die functie :)
Dat deed ik ook :)
Verder zijn onclick, onmousedown, onmouseup, etc. afaik drie verschillende events. Als je in je onmousedown-handler stopPropagation() gebruikt, werkt dat enkel voor het onmousedown event. Onclick blijft gewoon omhoog bubblen :)
Hmm, klopt, stom ook :P Wat zou dan een goede manier kunnen zijn om de click eventhandler niet uit te laten voeren als op dat moment de mouseup eventhandler al uitgevoerd wordt?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

event.stopPropagation zal in IE inderdaad undefined geven ;)
[...]

Hmm, klopt, stom ook :P Wat zou dan een goede manier kunnen zijn om de click eventhandler niet uit te laten voeren als op dat moment de mouseup eventhandler al uitgevoerd wordt?
Dit toevoegen lijkt me:
JavaScript:
1
document.getElementById(sIndicatorID).onclick = function(e) { e.stopPropagation(); }

(again: niet in IE natuurlijk ;))

Intentionally left blank


  • Mei
  • Registratie: Juni 2005
  • Laatst online: 17-10-2024
crisp schreef op maandag 20 augustus 2007 @ 12:27:
[...]

event.stopPropagation zal in IE inderdaad undefined geven ;)
Lezen, Crisp, het ging over FF :+ Pfff, die modjes van tegenwoordig ;)
Dit toevoegen lijkt me:
JavaScript:
1
document.getElementById(sIndicatorID).onclick = function(e) { e.stopPropagation(); }

(again: niet in IE natuurlijk ;))
En het is allemaal zo logisch als je het een ander ziet doen :P Zenks! Ga er zo weer ffies mee aanklooien.