Reg. datum: 24 juni 2008
code:
1
2
3
4
5
| element.onmousemove = function(e) {
e = e || window.event;
this.style.left = "...";
//etc.
}; |
Ehmm.. je maakt nu van e een boolean? Dit is immers een logische or. En een bitwise or op een objectpointer lijkt me ook niet de bedoeling.
Das gewoon shorthand (voor de shorthandquote:Cousin Boneless schreef op vrijdag 04 juli 2008 @ 16:17:
code:
1 2 3 4 5element.onmousemove = function(e) { e = e || window.event; this.style.left = "..."; //etc. };
Ehmm.. je maakt nu van e een boolean? Dit is immers een logische or. En een bitwise or op een objectpointer lijkt me ook niet de bedoeling.
code:
1
| var e = e ? e : window.event; |
code:
1
2
3
4
5
6
7
| var x = false; var y = 'woot'; alert(x || y); // alert 'woot' var x = 'blaat'; var y = 'woot'; alert(x || y); // alert 'blaat' |
Bosmonster wijzigde dit bericht 04-07-2008 16:24 (17%)
Zo, nu eerst even wat anders.
Reg. datum: 24 juni 2008
In JavaScript zijn de logische operatoren || en && als volgt gedefinieerd:quote:Cousin Boneless schreef op vrijdag 04 juli 2008 @ 16:17:
Ehmm.. je maakt nu van e een boolean? Dit is immers een logische or. En een bitwise or op een objectpointer lijkt me ook niet de bedoeling.
JavaScript:
1 | var a = b || c;
|
Take a life of responsibility, the inability to make right choices, add to it ignorance and indifference and top it off with a desire for escapism and kicks.
Reg. datum: 24 juni 2008
Reg. datum: 23 januari 2007
Je hebt een functie movewindow die een parameter id terugkrijgt. Zou je kunnen laten zien wat je met die functie doet, en waar je die waarde meegeeft aan de functie?
Music is an expression of pure emotion
Volgens mij heeft iemand IE6 uit z'n handen laten vallen; hij is kapot
Niet voor Firefox 3 helaas en beta 1 is broken.quote:Cartman! schreef op vrijdag 04 juli 2008 @ 15:07:
firebug erbij pakken dusconsole.log(e); en je weet wat e (niet) is...
www.getfirebug.com
Mijn icon werkt alleen in moderne browsers (Firefox en Opera).
In Firefox 3 kun je de laatste compatibele versie gewoon installeren via het Add-on venstertje. Daar werkt het prima.quote:Sebazzz schreef op vrijdag 04 juli 2008 @ 21:36:
[...]
Niet voor Firefox 3 helaas en beta 1 is broken.
(Tools -> Add-ons -> Get Add-ons -> Firebug intypen en voila)
Dat is blijkbaar ook al de 1.2 beta 4, dus denk dat de link op de site al een tijdje niet meer geupdatet is
Bosmonster wijzigde dit bericht 05-07-2008 00:52 (13%)
Zo, nu eerst even wat anders.
Of je kijkt even onder releasesquote:Bosmonster schreef op zaterdag 05 juli 2008 @ 00:50:
Dat is blijkbaar ook al de 1.2 beta 4, dus denk dat de link op de site al een tijdje niet meer geupdatet is
Hoezo? Waar staat dat? Of doel je op 't feit dat 'ie niet werkt op Fx 3?quote:Sebazzz schreef op vrijdag 04 juli 2008 @ 21:36:
beta 1 is broken.
RobIII wijzigde dit bericht 05-07-2008 01:04 (24%)
We all get along with some glue and duct tape here and there - but when the sh*t hits the fan, don’t blame the duct tape.
Trotse papa van Luca! | Pick My Icon!
JavaScript:
1 | function movePlayerDif(x) {
|
Met
HTML:
1 | <body onkeydown="getInput(event);">
|
Geeft zoiets: http://krijn.net/dump/arka.html (even snel iets gemaakt)
Note: in opera werkt het alleen als je muis over het 'actieve' element hangt (hier dus het blauwe balkje). IE6 kan niet met position: fixed; overweg (daarom een position: absolute). Nou weet ik niet precies wat je er mee wil, maar dit helpt je vast op weg
Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.
-- http://sketsi.com Hosting van tekeningen, schetsen.
Firefox zegt dat dat hele installatiepakket ongeldig is, en dat klopt ook want de xpi (wat gewoon een ZIP of een JAR is) is niet te openen met bijvoorbeeld 7-zip.quote:RobIII schreef op zaterdag 05 juli 2008 @ 01:03:
[...]
Hoezo? Waar staat dat? Of doel je op 't feit dat 'ie niet werkt op Fx 3?
Mijn icon werkt alleen in moderne browsers (Firefox en Opera).
Neemt niet weg dat de homepage al een tijdje niet geupdatet is blijkbaar, als daar nog steeds 1.1 beta met dikke letters op staat met een niet werkende xpi.quote:
Zo, nu eerst even wat anders.
Reg. datum: 23 januari 2007
code:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
}
.window_title {
font-weight: bold;
overflow: hidden;
}
.window {
background-color: #FFFFCC;
border: 1px solid #FFCC66;
position: absolute;
z-index: 2;
left: 200px;
top: 157px;
width: 250px;
vertical-align: top;
opacity: 1;
display: none;
margin-left: -125px;
}
.document {
height: 100%;
width: 100%;
}
.overlay {
height: 100%;
width: 100%;
z-index: 1;
opacity: 0.6;
-moz-opacity: 0.6;
filter: alpha(opacity=60);
background-color: #000000;
position: absolute;
left: 0px;
top: 0px;
display: none;
}
.window_content {
margin: 10px;
overflow: auto;
height: 150px;
overflow-x: hidden;
}
.document .window_title div {
margin-left: 5px;
height: inherit;
}
.title_close {
position: absolute;
right: 10px;
text-decoration: none;
color: #000000;
}
.menu {
background-color:#0099FF;
height: 32px;
color: #FFFFFF;
font-size: 24px;
}
.menu a {
color: #FFFFFF;
margin: 10px;
font-size: 24px;
text-decoration: none;
font-weight: bold;
}
-->
</style>
<script type="text/javascript">
function movewindow(id,e)
{
if (!e) var e = window.event;
var x = e.screenX;
var y = e.screenY;
document.getElementById(id).style.left=x+"px";
document.getElementById(id).style.top=y+"px";
}
function togglewindow(id) {
if(!(document.getElementById(id).style.display == 'inline'))
{
document.getElementById(id).style.display='inline';
document.getElementById('overlay').style.display='inline';
}
else
{
document.getElementById(id).style.display='none';
document.getElementById('overlay').style.display='none';
}
}
</script>
</head>
<body>
<div class="document">
<div class="menu"><a href="#" onclick="togglewindow('window')">Informatie:</a> | <a href="#" onclick="togglewindow('formexample')">Formulier:</a></div>
<div class="overlay" id="overlay"></div>
<div class="window" id="window">
<div class="window_title" onclick="movewindow('onclick)">
<div>
<div align="left">Titel:<a class="title_close" href="#" onmousedown="movewindow('window')">x</a></div>
</div>
</div>
<div class="window_content">Dit ding bevat momenteel nonsens...</div>
</div>
<div class="window" id="formexample">
<div class="window_title" onclick="movewindow('formexample')">
<div>
<div align="left">Formulier voorbeeld:<a class="title_close" href="#" onclick="movewindow('formexample')">x</a></div>
</div>
</div>
<div class="window_content">
<form action="#">
<input type="text" size="20" value="naam" onclick="this.value=''" id="name" />
<input type="text" size="20" value="achternaam" onclick="this.value=''" id="achternaam" />
</form>
</div>
</div>
</div>
</body>
</html> |
Verder zie ik ook dat je helemaal geen 2de parameter aan movewindow meegeeft. Binnen event handler definities in je HTML kun je het event object overigens bereiken via de variabel 'event'. Je kunt hier natuurlijk niet zelf bepalen wat de naam van de variabel wordt, dus standaard is dat dus 'event'. Dit is (waarschijnlijk) waarom IE er zo mee omgaat, en waarom je daar altijd event moet gebruiken.
Ik heb het idee dat ik je nu nog een beetje in het duister laat staan en dat je zo nog niet goed snapt wat er nu gebeurt. Ik zal je met een alternatief proberen duidelijk te maken hoe het ook kan.
Wat je ook kunt doen is je elementen waaraan je een event wilt hangen via DOM ophalen en er zo een functie aan koppelen. Bijvoorbeeld het volgende stukje:
HTML:
1 | <div id="test" onclick="alert(event);">test</div> |
Dit is vrijwel equivalent aan het volgende:
HTML:
1 | <div id="test">test</div> |
Waarbij de volgende script nog uitgevoerd wordt:
JavaScript:
1 | var test = document.getElementById('test');
|
Dit is waar voor DOM compliant browsers, maar, omdat IE er anders mee omgaat, is het daar niet hetzelfde voor. In IE is het event object namelijk te bereiken als member van window. Zoals alle variabelen die daaronder hangen, hoef je window zelf niet te specificeren, window.event is dus in de meeste gevallen gelijk aan event. In dit geval is dat echter niet zo, omdat de parameter deze variabel overschaduwd. En aangezien IE helemaal geen waarden mee stuurt via parameters aan de handler, heeft deze dus geen waarde in dit geval. In een handler definitie in je HTML is er voor IE echter geen parameter met deze naam, en wordt hij dus ook niet overschaduwd, je bereikt via 'event' dus altijd het de member van window.
Wat er dan meestal wordt gedaan is de parameter sowieso een andere naam geven, namelijk 'e'. In browsers die het event meesturen als parameter aan de handler kun je dan die waarde gebruiken. In het andere geval overschrijf de waarde met het event object dat onder window hangt. Zo dus:
JavaScript:
1 | var test = document.getElementById('test');
|
Ik hoop dat het zo iets duidelijker is, je moet even doorkrijgen wat er gebeurt en waar je gegevens vandaan komen. Belangrijk is om je goed in te lezen zodat je het echt goed snapt.
Wees je er overigens van bewust dat wat je nu doet waarschijnlijk niet gaat werken zoals je wil. Een onclick event wordt namelijk maar 1 keer uitgevoerd en ik heb het idee dat je meer in de drag en drop hoek wil zitten. Zoals ik nu kan beoordelen wordt je element gewoon verplaatst naar de plaatst waar je klikt, en verder niets. Beter is om met mousedown en mouseup te werken voor het in werking stellen van het geheel, en dan met mousemove je element te verplaatsten.
Michali wijzigde dit bericht 06-07-2008 10:52 (10%)
Music is an expression of pure emotion
Reg. datum: 23 januari 2007
e = e || window.event;
als vervanging voor
if (!e) var e = window.event;
met hetzelfde resultaat (volgens mij doen bijde code's min of meer hetzelfde)
het resultaat:
- safari doet wat hij moet doen:
- firefox doet dat niet
Pak voor dat soort dingen asjeblieft iets van Mootools of zo.... dan kun je je feitelijk focusen op lappen code schrijven in plaats van 5 keer zoveel code met iedere 3 regels uitzonderingen voor quirks van iedere mogelijke browser.quote:tuxdapinguin schreef op zaterdag 05 juli 2008 @ 23:23:
de context waarin ik het gebruik is alsvolgt. Ik wil een systeem op zetten waarmee ik verschillende windows kan openen en kan verplaatsen. het is dus belangrijk dat de functie uiteindelijk weet welk window versplaatst moet worden.
curry684 wijzigde dit bericht 07-07-2008 22:53 (16%)
Ik zie in je functiedefinitie al dat je 2 parameters definieert, maar bij je aanroep geef je er echter maar 1 mee. Ik heb al verteld hoe je het event object bereikt in alle browsers (vanuit zo'n eventhandlerdefintie via een attribuut), dus dan moet het niet meer moeilijk zijn om deze mee te geven aan die functie als 2de parameter, toch?
Michali wijzigde dit bericht 07-07-2008 23:20 (4%)
Music is an expression of pure emotion
Reg. datum: 23 januari 2007
code:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
}
.window_title {
font-weight: bold;
overflow: hidden;
}
.window {
background-color: #FFFFCC;
border: 1px solid #FFCC66;
position: absolute;
z-index: 2;
left: 200px;
top: 157px;
width: 250px;
vertical-align: top;
opacity: 1;
display: none;
margin-left: -125px;
}
.document {
height: 100%;
width: 100%;
}
.overlay {
height: 100%;
width: 100%;
z-index: 1;
opacity: 0.6;
-moz-opacity: 0.6;
filter: alpha(opacity=60);
background-color: #000000;
position: absolute;
left: 0px;
top: 0px;
display: none;
}
.window_content {
margin: 10px;
overflow: auto;
height: 150px;
overflow-x: hidden;
}
.document .window_title div {
margin-left: 5px;
height: inherit;
}
.title_close {
position: absolute;
right: 10px;
text-decoration: none;
color: #000000;
}
.menu {
background-color:#0099FF;
height: 32px;
color: #FFFFFF;
font-size: 24px;
}
.menu a {
color: #FFFFFF;
margin: 10px;
font-size: 24px;
text-decoration: none;
font-weight: bold;
}
-->
</style>
<script type="text/javascript">
function movewindow(id,e)
{
e = e || window.event;
var x = e.screenX;
var y = e.screenY;
document.getElementById(id).style.left=x+"px";
document.getElementById(id).style.top=y+"px";
}
function togglewindow(id) {
if(!(document.getElementById(id).style.display == 'inline'))
{
document.getElementById(id).style.display='inline';
document.getElementById('overlay').style.display='inline';
}
else
{
document.getElementById(id).style.display='none';
document.getElementById('overlay').style.display='none';
}
}
</script>
</head>
<body>
<div class="document">
<div class="menu"><a href="#" onmousedown="togglewindow('window')">Informatie:</a> | <a href="#" onmousedown="togglewindow('formexample')">Formulier:</a></div>
<div class="overlay" id="overlay"></div>
<div class="window" id="window">
<div class="window_title" onmousedown="movewindow('window',e)">
<div>
<div align="left">Titel:<a class="title_close" href="#" onmousedown="movewindow('window',e)">x</a></div>
</div>
</div>
<div class="window_content">Dit ding bevat momenteel nonsens...</div>
</div>
<div class="window" id="formexample">
<div class="window_title" onmousedown="movewindow('formexample',e)">
<div>
<div align="left">Formulier voorbeeld:<a class="title_close" href="#" onmousedown="movewindow('formexample',e)">x</a></div>
</div>
</div>
<div class="window_content">
<form action="#">
<input type="text" size="20" value="naam" onmousedown="this.value=''" id="name" />
<input type="text" size="20" value="achternaam" onmousedown="this.value=''" id="achternaam" />
</form>
</div>
</div>
</div>
</body>
</html> |
en dus e al meegegeven bij het aanroepen van het event (of doe ik dit fout) maar nog steeds gebeurt er niets in ff
ja, dat wilde ik dus ook zeggen. Waarom het wiel weer opnieuw uitvinden als andere al heel veel goeie wielen met spaken en dynamo's er op gemaakt hebben.quote:curry684 schreef op maandag 07 juli 2008 @ 22:52:
[...]
Pak voor dat soort dingen asjeblieft iets van Mootools of zo.... dan kun je je feitelijk focusen op lappen code schrijven in plaats van 5 keer zoveel code met iedere 3 regels uitzonderingen voor quirks van iedere mogelijke browser.
Music is an expression of pure emotion
Reg. datum: 24 juni 2008
Zie post van krvabo van vorige week zaterdag en die van Michali (zondag 06 juli 2008 10:43)
Cousin Boneless wijzigde dit bericht 12-07-2008 11:00 (34%)



