Updated Branches: refs/heads/wicket-1.5.x 818cc0455 -> 32c236686
WICKET-4894 Internet Explorer fails fails to properly include conditional stylesheet links added via AjaxRequestTarget Add javadoc and a log warning explaining that IE conditional comments don't work in Ajax requests. Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/32c23668 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/32c23668 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/32c23668 Branch: refs/heads/wicket-1.5.x Commit: 32c2366866365f86fdef1e8683d6795cf3a4d452 Parents: 818cc04 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Mon Dec 3 10:48:03 2012 +0100 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Mon Dec 3 10:48:03 2012 +0100 ---------------------------------------------------------------------- .../apache/wicket/markup/html/IHeaderResponse.java | 28 ++++++++++++++- .../markup/html/internal/HeaderResponse.java | 11 ++++++ 2 files changed, 38 insertions(+), 1 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/32c23668/wicket-core/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java index 8ac1f22..3aa236f 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java @@ -224,7 +224,20 @@ public interface IHeaderResponse extends Closeable /** * Writes a conditional IE comment with a CSS reference with query parameters, if the specified * reference hasn't been rendered yet. - * + * + * <strong>Warning</strong>: the conditional comments don't work when injected dynamically + * with JavaScript (i.e. in Ajax response). An alternative solution is to use user agent sniffing + * at the server side: + * <code><pre> + * public void renderHead(IHeaderResponse response) { + * WebClientInfo clientInfo = (WebClientInfo) getSession().getClientInfo(); + * ClientProperties properties = clientInfo.getProperties(); + * if (properties.isBrowserInternetExplorer() && properties.getBrowserVersionMajor() >= 8) { + * response.renderCSSReference(new PackageResourceReference(MyPage.class, "my-conditional.css" )); + * } + * } + * </pre></code> + * * @param reference * resource reference pointing to the CSS resource * @param pageParameters @@ -250,6 +263,19 @@ public interface IHeaderResponse extends Closeable /** * Writes a conditional IE comment for a link to a CSS resource, if the specified url hasn't * been rendered yet. + * + * <strong>Warning</strong>: the conditional comments don't work when injected dynamically + * with JavaScript (i.e. in Ajax response). An alternative solution is to use user agent sniffing + * at the server side: + * <code><pre> + * public void renderHead(IHeaderResponse response) { + * WebClientInfo clientInfo = (WebClientInfo) getSession().getClientInfo(); + * ClientProperties properties = clientInfo.getProperties(); + * if (properties.isBrowserInternetExplorer() && properties.getBrowserVersionMajor() >= 8) { + * response.renderCSSReference(new PackageResourceReference(MyPage.class, "my-conditional.css" )); + * } + * } + * </pre></code> * * @param url * context-relative url of the CSS resource http://git-wip-us.apache.org/repos/asf/wicket/blob/32c23668/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java index cd44d5c..d7bbb0a 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java @@ -35,6 +35,8 @@ import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.string.CssUtils; import org.apache.wicket.util.string.JavaScriptUtils; import org.apache.wicket.util.string.Strings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** @@ -45,6 +47,8 @@ import org.apache.wicket.util.string.Strings; */ public abstract class HeaderResponse implements IHeaderResponse { + private static final Logger logger = LoggerFactory.getLogger(HeaderResponse.class); + private final Set<Object> rendered = new HashSet<Object>(); private boolean closed; @@ -138,6 +142,13 @@ public abstract class HeaderResponse implements IHeaderResponse { if (Strings.isEmpty(condition) == false) { + if (AjaxRequestTarget.get() != null) + { + // WICKET-4894 + logger.warn("IE CSS engine doesn't support dynamically injected links in " + + "conditional comments. See the javadoc of IHeaderResponse for alternative solution."); + } + getResponse().write("<!--[if "); getResponse().write(condition); getResponse().write("]>");
