我一直在阅读很多地方,并且还使用了有关在页面底部包含 javascript 的知识,除非有一些 document.write 脚本或范围问题。但最近,我遇到了一些我从未(可能)见过或使用过的东西。有些人在“i”标签内使用脚本标签。我不知道在其他标签中使用脚本标签的原因。
我非常感谢澄清我的问题。
ps 包含所有脚本标签的“i”标签位于页面底部,就在结束正文标签之前。
我一直在阅读很多地方,并且还使用了有关在页面底部包含 javascript 的知识,除非有一些 document.write 脚本或范围问题。但最近,我遇到了一些我从未(可能)见过或使用过的东西。有些人在“i”标签内使用脚本标签。我不知道在其他标签中使用脚本标签的原因。
我非常感谢澄清我的问题。
ps 包含所有脚本标签的“i”标签位于页面底部,就在结束正文标签之前。
我假设您正在谈论http://craga89.github.io/notyfy/并且您<i>
在 Firebug 的 HTML 面板或类似工具中看到了该标签:
该页面包含无效的 HTML。特别是,它有几个未闭合的标签。这使得浏览器在呈现页面之前应用了某些修复,因为它需要使用有效的 HTML 才能在内存中生成 DOM 树。主要问题是不能保证所有浏览器都会生成相同的修复程序,或者这些修复程序会按预期工作。
如果您打开原始 HTML 代码(在某些浏览器中您可以点击Ctrl+ U),您会看到<script>
标签没有被标签包围<i>
。您在 DOM 节点中看到的是浏览器应用修复的结果。
例如,<i>
顶部有一个未闭合的标签:
<i>notyfy adds the ability to style notyfy via CSS, as well removing the need for JS-based layouts and implementing event-type callbacks.</p>
如果你想知道的话,一些前端框架,比如 Twitter Boostrap 已经决定(ab)使用<i>
标签来显示图标:
<span class="runner" data-layout="top" data-type="alert">Alert <i class="icon-caret-right"></i></span>
当然,这与 JavaScript 无关——这样的图标是用 CSS 生成的。
编辑: HTML 代码和 DOM 树之间有一个微妙但重要的区别。浏览器使用 HTML 代码构建文档的内存表示,称为 DOM 树。HTML 被设计为可能无效,但 DOM 树不能。例如,这个 HTML 代码:
<!DOCTYPE html>
<html>
<head>
<title>Invalid HTML test</title>
</head>
<body>
<p>Hellow, <i>world</div>
</body>
</html>
...将生成这棵树:
如您所见,它们是不同的。为了生成有效的文档结构,我的浏览器已经完全删除了<div>
标签,并决定在正文结束之前关闭<p>
和标签。<i>