[
https://issues.apache.org/jira/browse/TAP5-1470?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jochen Kemnade updated TAP5-1470:
---------------------------------
Labels: bulk-close-candidate (was: )
This issue has been last updated more than a year ago, has no assignee, affects
an old version of Tapestry that is not actively developed anymore, and is
therefore prone to be bulk-closed in the near future.
If the issue still persists with the most recent development preview of
Tapestry (5.4-beta-26, available from Maven Central), please update it as soon
as possible. In the case of a feature request, please discuss it with the
Tapestry developer community on the [email protected] mailing list first.
> Group CSS together to avoid IE's restriction of 31 external css files
> ---------------------------------------------------------------------
>
> Key: TAP5-1470
> URL: https://issues.apache.org/jira/browse/TAP5-1470
> Project: Tapestry 5
> Issue Type: Improvement
> Components: tapestry-core
> Affects Versions: 5.2, 5.1
> Reporter: Michael Wyraz
> Labels: bulk-close-candidate
>
> IE is restricted to load 31 external CSS per page. All other are ignored.
> Also the number of @import declarations are restricted to 30 per css
> declaration.
> The following change to DocumentLinkerImpl beraks the imported css into
> blocks. A new block starts when more than 30 @import occured of when the
> "media" attribute changes.
> protected void addStylesheetsToHead(Element root,
> List<IncludedStylesheet> stylesheets)
> {
> int count = stylesheets.size();
> if (count == 0) return;
> // This only applies when the document is an HTML document. This may
> need to change in the
> // future, perhaps configurable, to allow for html and xhtml and
> perhaps others. Does SVG
> // use stylesheets?
> String rootElementName = root.getName();
> // Not an html document, don't add anything.
> if (!rootElementName.equals("html")) return;
> Element head = findOrCreateElement(root, "head", true);
> Element existing = findExistingElement(head, "link");
> // Create a temporary container element.
> Element tempContainer = head.element("temp-container");
> for (int i = 0; i < count; i++)
> stylesheets.get(i).add(tempContainer);
> tempContainer.remove();
>
> Element container = head.element("css-container");
> // Fix für IE: Immer wenn der "media" Typ wechselt oder 30 CSS
> erreicht sind, wird ein neues CSS-Tag aufgemacht
> Element style=null;
> int cssCount=Integer.MAX_VALUE;
> String lastMedia="all";
>
> for (Node _css: tempContainer.getChildren())
> {
> if (!(_css instanceof Element)) continue;
> Element css=(Element) _css;
> String href=css.getAttribute("href");
> String media=css.getAttribute("media");
> if (media==null) media="all";
>
> if (cssCount>30 || !media.equalsIgnoreCase(lastMedia))
> {
> style=container.element("style", "type","text/css",
> "media",media);
> lastMedia=media;
> cssCount=0;
> }
> style.text("@import url("+href+");");
> cssCount++;
> }
> if (existing != null)
> container.moveBefore(existing);
> container.pop();
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)