我正在使用Apache Tiles,我有一些包含自己头部的瓷砖. Tiles的结果呈现为具有多个头的HTML页面.
我的问题:
>如何在IE和Chrome中处理生成的页面? [它呈现并显得成功]
>使用APACHE TILES处理/避免多个头[CSS / Javascript]的最佳实践是什么,而不必要求所有页面使用相同的JS和CSS文件.
例如问题二:
假设您有以下页面:主页,个人资料和图库列表.图库列表有花哨的JQuery YUI …以及更多样式.对于大多数用户来说,他们只对主页和配置文件页面感兴趣,所以为什么要加载与Gallery相关的JS和CSS文件来减慢它们的速度.
这是生成的
<html> <head> <title>The Template's Title</title> </head> <body> <head> <script src="javascriptfile.js"/></head> Tile One Content <head> <script src="javascriptfile2.js"/></head> Title Two Content </body> </html>
生成的内容在javascriptfile.js和javascriptfile2中运行脚本.我在第一个问题中问的是:是否忽略了额外的头,内容是否考虑?他们是否合并到html / head级别?是否可以在第二个或更晚的头部包含CSS文件?使用更严格的DTD会产生错误吗?
解决方法
你的例子中发生的是第一个< head>在< body>中被丢弃了.然后< script src =“javascriptfile.js”/>处理标记,这是一个开始标记,而不是自闭标记,因此后面的所有内容(包括看起来像标记的所有内容)都将成为脚本元素的文本子项.没有显示任何内容,也没有运行脚本.如果< script src =“javascriptfile.js”/>被替换为< script src =“javascriptfile.js”>< / script>,并且< script src =“javascriptfile2.js”/>的ditto,头部开始和结束标记被静默丢弃,并且脚本元素不会移动.显示“Tile One Content Title Two Content”并运行脚本. DTD完全没有区别.
IE有点棘手,因为在IE10之前,它不使用HTML5解析器算法,因此它的确切行为是个谜.但是,粗略的实验似乎表明它具有与上述相同的行为.
虽然一些传统浏览器会移动只能出现在头部的元素 – 例如< link> – 进入头部,其他浏览器没有,并且不能依赖这样的行为.
总而言之,最好避开这种结构.
我不知道Apache Tiles的做法.