Javascript callback functie werkt alleen in chrome
Omdat het maken/toevoegen van een module in mijn cms veel code nodig had heb ik het volgende gemaakt in javascript:
Code (php)
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
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
function mDialog(dialog){
this.autoOpen = true;
this.height = 400;
this.width = 600;
this.modal = true;
this.proceedHandler = null;
this.dialog = dialog;
this.proceedButton = 'Opslaan';
this.abortButton = 'Annuleren';
}
mDialog.prototype.setProceedButton = function(name){
this.proceedButton = name;
}
mDialog.prototype.setAbortButton = function(name){
this.abortButton = name;
}
mDialog.prototype.setProceedHandler = function(handler){
this.proceedHandler = handler;
}
mDialog.prototype.display = function(){
//window.Dialog = this;
var mDialog = this;
var cButtons = {};
cButtons[this.proceedButton] = function(){
//var Dialog = window.Dialog;
var Dialog = mDialog;
alert('dit werkt');
setTimeout(function(){
callback(Dialog.proceedHandler());
},5);
$(this).dialog('close');
}
cButtons[this.abortButton] = function(){
$(this).dialog('close');
}
$(this.dialog).dialog({
autoOpen : this.autoOpen,
height : this.height,
width : this.width,
modal : this.modal,
buttons : cButtons
})
}
this.autoOpen = true;
this.height = 400;
this.width = 600;
this.modal = true;
this.proceedHandler = null;
this.dialog = dialog;
this.proceedButton = 'Opslaan';
this.abortButton = 'Annuleren';
}
mDialog.prototype.setProceedButton = function(name){
this.proceedButton = name;
}
mDialog.prototype.setAbortButton = function(name){
this.abortButton = name;
}
mDialog.prototype.setProceedHandler = function(handler){
this.proceedHandler = handler;
}
mDialog.prototype.display = function(){
//window.Dialog = this;
var mDialog = this;
var cButtons = {};
cButtons[this.proceedButton] = function(){
//var Dialog = window.Dialog;
var Dialog = mDialog;
alert('dit werkt');
setTimeout(function(){
callback(Dialog.proceedHandler());
},5);
$(this).dialog('close');
}
cButtons[this.abortButton] = function(){
$(this).dialog('close');
}
$(this.dialog).dialog({
autoOpen : this.autoOpen,
height : this.height,
width : this.width,
modal : this.modal,
buttons : cButtons
})
}
In gebruik doe ik dan dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(document).on('click','#een-button',function(){
var dialog = new mDialog('#een-dialog');
dialog.setProceedHandler(function(){
alert('Dit krijg ik alleen te zien in chrome');
var poster = new mPoster;
poster.setForm('#een-form');
poster.setSuccessMessage('Een bericht');
poster.post();
})
dialog.display();
});
var dialog = new mDialog('#een-dialog');
dialog.setProceedHandler(function(){
alert('Dit krijg ik alleen te zien in chrome');
var poster = new mPoster;
poster.setForm('#een-form');
poster.setSuccessMessage('Een bericht');
poster.post();
})
dialog.display();
});
Nu is het probeem dat de callback functie in de mDialog.prototype.display alleen werkt in chrome en niet in ie safari en firefox. Heeft iemand enig idee waar dat aan kan liggen??
Alvast bedankt.
Toevoeging op 06/04/2013 19:17:31:
Het is opgelost, dit: callback(Dialog.proceedHandler());
moest zijn callback(Dialog.proceedHandler);
Ik had het al getest maar ben denk de cache vergeten te legen. Oevergrens toch vreemd dat het in chrome wel werkte.
Er zijn nog geen reacties op dit bericht.