为什么JS脚本放在</身体>并且</页眉>被处决
Why does a JS script placed after the </body> and </header> get executed?
我正在用PHP做一些事情,我想包括一个文件并在末尾插入一些东西。我不假思索地做了收录,然后呼应了我想插入的材料,那是一个JS脚本。
当我查看输出时,我意识到我忘记了包含文件中的标记。脚本是在他们之后插入的,但令人惊讶的是(至少对我来说)它被执行了。
如果你在我做这件事之前问我,在和标记之后的脚本是否会执行,我会说"我不这么认为。"我会说我认为它不会执行,因为到目前为止,我一直认为在和标记后面的任何东西都会被浏览器忽略。
所以,如果你问的话,我会给出那个答案,我错了。
放在和标记后面的脚本确实执行了——为什么?
我已经在FF 3.6.24和I.E 8.0.7601.17514中尝试过,它在两者中的表现都相同。
显示和标记后的任何文本-为什么?
有人对此有什么想法吗?这是我可以信赖的东西吗?如果是这样的话,我可以在这里和那里简化一些处理。
这是我玩的页面http://www.bobnovell.com/PastHtmlEndTesting.shtml-如果您的特定浏览器没有执行脚本和/或显示我放在脚本后面的文本,请告诉我。
Bob
这是HTML5中指定的行为,尽管它会被HTML5验证器标记。
after-after-body插入模式定义了</html>
标记之后的内容会发生什么。处理这种情况的规则是:
其他任何东西
↪分析错误。将插入模式切换到"插入"模式;体内";并重新处理令牌。
因此,从技术上讲,这是一个解析错误,但行为定义良好。<script>
元素被解析和执行,就像它出现在主体中一样,并且该元素应该出现在主体的DOM中。
大多数浏览器不会将";解析错误";是致命的。HTML 5规范解释道:
解析算法中的某些点被认为是解析错误解析错误的错误处理是明确定义的:用户代理在遇到此类问题时必须按照下面所述的方式操作,或者必须在遇到第一个不希望应用下面所述规则的错误时中止处理。
- 在<页眉>标签
- 如何更改<svg>标记为<img>用js标记
- 如何逃离<>在javascript下划线模板中
- 有没有一种方法可以检测ios<>使用jquery和触发器操作形成导航按钮
- 正则表达式,它允许除“”之外的所有字符<>_;{}[]”;
- ajax调用:响应<->数据类型
- 如果所有三个文本框<>然后是100%
- CORS的问题.烧瓶<->AngularJS
- 有没有一种方法可以创建与Java<->JSON映射对象,如JSON.stringfy(jsObject)创建的
- 什么是%<>%调用了语法
- JavaScript返回值:What dos<>意思是
- JavaScript中哪种类型的值对应于Java`List<>`
- 如何发送类似“<>"在参数中使用$.ajax-to-server
- 不等于<>操作员不工作
- jquery附加函数转换<>到实体名称
- 只有当超过3个元素时才显示更多内容按钮,否则不显示.使用jquery's:lt:gt
- 为什么在<>ckeditor中不支持
- url有效性的Java脚本regexp,带有<>
- 设计Javascript前端<->C++后端通信
- 比较查询运算符ObjectId<->日期