Repository: wicket Updated Branches: refs/heads/wicket-6.x 6b50a9e94 -> 626d93fb0
WICKET-5747 Wicket Ajax Click handling gets requeued in OnDomReady so fire out of order Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/626d93fb Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/626d93fb Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/626d93fb Branch: refs/heads/wicket-6.x Commit: 626d93fb0f8aa1997d534f6b2f150db72d06fde6 Parents: 6b50a9e 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:45:00 2014 +0200 ---------------------------------------------------------------------- .../wicket/ajax/res/js/wicket-event-jquery.js | 23 ++++++++---------- .../markup/head/OnDomReadyHeaderItem.java | 1 - .../wicket/markup/head/ResourceAggregator.java | 25 ++++++++++++++------ 3 files changed, 28 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/626d93fb/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 ca37a13..41fca04 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 @@ -231,21 +231,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/626d93fb/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java index 8582cac..c0a415e 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java @@ -22,7 +22,6 @@ import org.apache.wicket.Application; import org.apache.wicket.request.Response; import org.apache.wicket.request.resource.ResourceReference; import org.apache.wicket.settings.IJavaScriptLibrarySettings; -import org.apache.wicket.util.lang.Args; import org.apache.wicket.core.util.string.JavaScriptUtils; import org.apache.wicket.util.string.Strings; http://git-wip-us.apache.org/repos/asf/wicket/blob/626d93fb/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 67e80a9..9cad055 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; @@ -189,7 +194,7 @@ public class ResourceAggregator extends DecoratingHeaderResponse super(real); itemsToBeRendered = new LinkedHashMap<HeaderItem, RecordedHeaderItem>(); - domReadyItemsToBeRendered = new ArrayList<OnDomReadyHeaderItem>(); + domReadyItemsToBeRendered = new ArrayList<HeaderItem>(); loadItemsToBeRendered = new ArrayList<OnLoadHeaderItem>(); } @@ -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)) {
