javascript – HTML多头

注意:我绝不提倡页面内的多个头

我正在使用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会产生错误吗?

解决方法

好吧,在现代Chrome中,至少可以知道会发生什么. Chrome使用HTML5解析器算法,该算法准确描述了如何处理无效标记.血淋淋的细节是在 http://dev.w3.org/html5/spec/tree-construction.html#parsing-main-inbody

你的例子中发生的是第一个< 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的做法.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...