WICKET-6108 Closing a ModalWindow with jQuery 2.2.0 produces javascript errors

Wicket should not try to stop 'domready' events.
In case of 'domready' Wicket uses jQuery.ready(handler) instead of 
jQuery.on(eventName, handler) and this makes the difference.

See https://github.com/jquery/jquery/issues/2963


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/7b31893a
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/7b31893a
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/7b31893a

Branch: refs/heads/lambdas
Commit: 7b31893a030ade58ce10519a0ac0296ca8207058
Parents: 6083c81
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Wed Mar 2 17:30:09 2016 +0100
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Wed Mar 2 17:33:04 2016 +0100

----------------------------------------------------------------------
 .../apache/wicket/ajax/res/js/wicket-ajax-jquery.js    | 13 +++++++++----
 .../apache/wicket/ajax/res/js/wicket-event-jquery.js   |  3 +--
 wicket-core/src/test/js/ajax.js                        |  6 ++++--
 3 files changed, 14 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/7b31893a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index aff5556..55e6e61 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -1955,9 +1955,12 @@
                                        Wicket.Event.add(attrs.c, evt, function 
(jqEvent, data) {
                                                var call = new 
Wicket.Ajax.Call();
                                                var attributes = 
jQuery.extend({}, attrs);
-                                               attributes.event = 
Wicket.Event.fix(jqEvent);
-                                               if (data) {
-                                                       
attributes.event.extraData = data;
+
+                                               if (evt !== "domready") {
+                                                       attributes.event = 
Wicket.Event.fix(jqEvent);
+                                                       if (data) {
+                                                               
attributes.event.extraData = data;
+                                                       }
                                                }
 
                                                
call._executeHandlers(attributes.ih, attributes);
@@ -1975,7 +1978,9 @@
                                                else {
                                                        call.ajax(attributes);
                                                }
-                                               
Wicket.Ajax._handleEventCancelation(attributes);
+                                               if (evt !== "domready") {
+                                                       
Wicket.Ajax._handleEventCancelation(attributes);
+                                               }
                                        }, null, attrs.sel);
                                });
                        },

http://git-wip-us.apache.org/repos/asf/wicket/blob/7b31893a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
index 7e0322c..9fb0aa2 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
@@ -177,8 +177,7 @@
                         * If no event is given as argument (IE), window.event 
is returned.
                         */
                        fix: function (evt) {
-                               var evnt = evt || window.event;
-                               return jQuery.event.fix(evnt);
+                               return evt || jQuery.event.fix(window.event);
                        },
 
                        fire: function (element, event) {

http://git-wip-us.apache.org/repos/asf/wicket/blob/7b31893a/wicket-core/src/test/js/ajax.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/js/ajax.js b/wicket-core/src/test/js/ajax.js
index c66ef6d..bdd772f 100644
--- a/wicket-core/src/test/js/ajax.js
+++ b/wicket-core/src/test/js/ajax.js
@@ -435,7 +435,7 @@ jQuery(document).ready(function() {
                 */
                asyncTest('verify default attributes.', function () {
 
-                       expect(25);
+                       expect(26);
 
                        var attrs = {
                                u: 'data/ajax/nonWicketResponse.json',
@@ -445,6 +445,7 @@ jQuery(document).ready(function() {
                                                equal(textStatus, 
"parsererror", "textStatus");
                                                equal(attributes.u, attrs.u, 
"url");
                                                deepEqual(attributes.e, [ 
"domready" ], "events");
+                                               equal(attributes.event, null, 
"No event for 'domready'");
                                                equal(attributes.ch, '0|s', 
'channel');
                                                equal(attributes.dt, 'xml', 
'data type');
                                                equal(attributes.wr, true, 
'wicket ajax response');
@@ -476,7 +477,7 @@ jQuery(document).ready(function() {
 
                asyncTest('verify arguments to global listeners. Success 
scenario.', function () {
 
-                       expect(13);
+                       expect(14);
 
                        var attrs = {
                                u: 'data/ajax/nonWicketResponse.json',
@@ -496,6 +497,7 @@ jQuery(document).ready(function() {
                                        two: '2',
                                        three: true
                                };
+                               ok(attributes.event instanceof jQuery.Event, 
"There must be an event for non-'domready' events");
                                deepEqual(data, expected, 'Success: data');
                                equal('success', textStatus, 'Success: 
textStatus');
                                equal(attrs.u, attributes.u, 'Success: attrs');

Reply via email to