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');
