Repository: wicket Updated Branches: refs/heads/master 2014e0558 -> 5fb0c772b
WICKET-5747 Wicket Ajax Click handling gets requeued in OnDomReady so fire out of order (cherry picked from commit 626d93fb0f8aa1997d534f6b2f150db72d06fde6) Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/5fb0c772 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/5fb0c772 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/5fb0c772 Branch: refs/heads/master Commit: 5fb0c772b4259eae31514272f9479fbdbe6c6470 Parents: 2014e05 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Mon Nov 17 17:45:00 2014 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Mon Nov 17 17:48:09 2014 +0200 ---------------------------------------------------------------------- .../wicket/ajax/res/js/wicket-event-jquery.js | 23 +++++++++----------- .../wicket/markup/head/ResourceAggregator.java | 23 +++++++++++++++----- 2 files changed, 27 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/5fb0c772/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 beea61a..15f100a 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 @@ -209,21 +209,18 @@ jQuery(fn); }); } else { - // try to find the element once the DOM is ready - jQuery(function() { - type = (type === 'mousewheel' && Wicket.Browser.isGecko()) ? 'DOMMouseScroll' : type; - var el = element; - if (typeof(element) === 'string') { - el = document.getElementById(element); - } + type = (type === 'mousewheel' && Wicket.Browser.isGecko()) ? 'DOMMouseScroll' : type; + var el = element; + if (typeof(element) === 'string') { + el = document.getElementById(element); + } - if (!el && Wicket.Log) { - Wicket.Log.error('Cannot bind a listener for event "' + type + - '" on element "' + element + '" because the element is not in the DOM'); - } + if (!el && Wicket.Log) { + Wicket.Log.error('Cannot bind a listener for event "' + type + + '" on element "' + element + '" because the element is not in the DOM'); + } - jQuery(el).on(type, selector, data, fn); - }); + jQuery(el).on(type, selector, data, fn); } return element; }, http://git-wip-us.apache.org/repos/asf/wicket/blob/5fb0c772/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java index 2282d2f..3de2aec 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java @@ -172,7 +172,12 @@ public class ResourceAggregator extends DecoratingHeaderResponse } private final Map<HeaderItem, RecordedHeaderItem> itemsToBeRendered; - private final List<OnDomReadyHeaderItem> domReadyItemsToBeRendered; + + /** + * Header items which should be executed once the DOM is ready. + * Collects OnDomReadyHeaderItems and OnEventHeaderItems + */ + private final List<HeaderItem> domReadyItemsToBeRendered; private final List<OnLoadHeaderItem> loadItemsToBeRendered; private Object renderBase; @@ -251,10 +256,10 @@ public class ResourceAggregator extends DecoratingHeaderResponse public void render(HeaderItem item) { item = getItemToBeRendered(item); - if (item instanceof OnDomReadyHeaderItem) + if (item instanceof OnDomReadyHeaderItem || item instanceof OnEventHeaderItem) { renderDependencies(item, new LinkedHashSet<HeaderItem>()); - domReadyItemsToBeRendered.add((OnDomReadyHeaderItem)item); + domReadyItemsToBeRendered.add(item); } else if (item instanceof OnLoadHeaderItem) { @@ -314,12 +319,18 @@ public class ResourceAggregator extends DecoratingHeaderResponse private void renderCombinedEventScripts() { StringBuilder combinedScript = new StringBuilder(); - for (OnDomReadyHeaderItem curItem : domReadyItemsToBeRendered) + for (HeaderItem curItem : domReadyItemsToBeRendered) { if (markItemRendered(curItem)) { combinedScript.append('\n'); - combinedScript.append(curItem.getJavaScript()); + if (curItem instanceof OnDomReadyHeaderItem) + { + combinedScript.append(((OnDomReadyHeaderItem)curItem).getJavaScript()); + } else if (curItem instanceof OnEventHeaderItem) + { + combinedScript.append(((OnEventHeaderItem)curItem).getCompleteJavaScript()); + } combinedScript.append(';'); } } @@ -352,7 +363,7 @@ public class ResourceAggregator extends DecoratingHeaderResponse */ private void renderSeperateEventScripts() { - for (OnDomReadyHeaderItem curItem : domReadyItemsToBeRendered) + for (HeaderItem curItem : domReadyItemsToBeRendered) { if (markItemRendered(curItem)) {
