Hoe het precies komt weet ik niet, maar ik heb een timeout die niet wordt uitgevoerd in JS.
Als ik in de code direct na de setTimeout een alert doe krijg ik netjes een alert. Zet ik echter een alert bovenin de functie die ik met de timeout aanroep gebeurt er niets.
Zelf denk ik dat er iets mis gaat met een clearTimeout, maar ik zie niet in hoe dat zou kunnen. De relevante code.
Het probleem is dus dat de eerste alert netjes wordt uitgevoerd, de tweede niet.
De variabelen die bij de timeouts worden gebruikt zijn globale variabelen. Er zijn buiten dit codevoorbeeldje geen andere clearTimeouts aanwezig.
Iemand een idee waar het mis gaat?
Als ik in de code direct na de setTimeout een alert doe krijg ik netjes een alert. Zet ik echter een alert bovenin de functie die ik met de timeout aanroep gebeurt er niets.
Zelf denk ik dat er iets mis gaat met een clearTimeout, maar ik zie niet in hoe dat zou kunnen. De relevante code.
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
30
31
32
33
34
35
36
37
38
39
40
| function handle_link_hover(event) { var link = event.target; var href = link.getAttribute('href'); var userid = href.replace(/.*\/planning\/[0-9]*\/select\/([0-9]*)\/[0-9]*\/.*/, "$1"); link.addEventListener('mouseout', short_file_mouseout, false); window.clearTimeout(hover_timeout); hover_timeout = window.setTimeout('load_short_file('+userid+')', 500); } function short_file_mouseout() { var body = document.getElementsByTagName('body').item(0); var info_block = document.getElementById('info_block'); window.clearTimeout(hover_timeout); xml_request.abort(); if (info_block) { hover_out = window.setTimeout('kill_short_file', 100); alert('Timeout for hiding infobox set!'); } } function kill_short_file() { alert('Hiding infobox!'); var body = document.getElementsByTagName('body').item(0); var info_block = document.getElementById('info_block'); while (info_block.hasChildNodes()) { info_block.removeChild(info_block.firstChild); } body.removeChild(info_block); } |
Het probleem is dus dat de eerste alert netjes wordt uitgevoerd, de tweede niet.
De variabelen die bij de timeouts worden gebruikt zijn globale variabelen. Er zijn buiten dit codevoorbeeldje geen andere clearTimeouts aanwezig.
Iemand een idee waar het mis gaat?
Ik ontken het bestaan van IE.