Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Doctype声明之前添加脚本标记_Javascript_Html - Fatal编程技术网

Javascript 在Doctype声明之前添加脚本标记

Javascript 在Doctype声明之前添加脚本标记,javascript,html,Javascript,Html,我只是做了一个小测试,如果我以下面所示的方式添加一个脚本,它似乎可以在大多数现代主流浏览器中执行。它在加载页面之前执行,我想知道这是否适用于所有浏览器,包括历史浏览器 <script type="text/javascript"> alert("hello world"); </script> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" conten

我只是做了一个小测试,如果我以下面所示的方式添加一个脚本,它似乎可以在大多数现代主流浏览器中执行。它在加载页面之前执行,我想知道这是否适用于所有浏览器,包括历史浏览器

<script type="text/javascript">
alert("hello world");
</script>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
</body>
</html>
当然,我正在试图找到一种方法来执行脚本,以便在加载任何页面之前设置页面……为此目的提供的任何输入都将不胜感激。使用这种方法会是错误的吗


提前感谢您的帮助

您在评论中提到要在显示页面之前隐藏/显示元素,并且onload太慢。请尝试使用DOMContentLoaded,因为它会在生成HTMLDOM时触发,但在加载所有图像、CSS和其他外部引用之前触发


这对我来说一直很有效——尽管我使用jQuery的ready事件使其在跨浏览器中工作。而且它可以保持HTML的有效性。

您在评论中提到要在页面显示之前隐藏/显示元素,并且onload太慢。请尝试使用DOMContentLoaded,因为它会在生成HTMLDOM时触发,但在加载所有图像、CSS和其他外部引用之前触发

这对我来说一直很有效——尽管我使用jQuery的ready事件使其在跨浏览器中工作。而且它可以使您的HTML保持有效。

根据

HTML语法中的一致性文档必须包含以下内容 零件,按以下顺序排列:

(可选)单个U+FEFF字节顺序标记BOM字符。 任意数量的注释和空格字符。 文档类型。 任意数量的注释和空格字符。 html元素,如果有属性,则包含属性,如果有内容,则包含内容。 浏览器遵循这些规范,您的代码即使现在运行,将来可能会中断,因为 它显然打破了元素的顺序规则

第二,几乎总是为了性能的提高而提高性能。

根据

HTML语法中的一致性文档必须包含以下内容 零件,按以下顺序排列:

(可选)单个U+FEFF字节顺序标记BOM字符。 任意数量的注释和空格字符。 文档类型。 任意数量的注释和空格字符。 html元素,如果有属性,则包含属性,如果有内容,则包含内容。 浏览器遵循这些规范,您的代码即使现在运行,将来可能会中断,因为 它显然打破了元素的顺序规则


其次,为了提高性能,几乎总是最好的方法。

脚本会被执行,但是DOCTYPE字符串之前的任何元素都会进行一些浏览,这意味着会有大量记录不良的怪癖和奇怪之处,以及混乱

因此,无论您的理由是什么,您至少应该将元素放在第一个语法正确的位置,即标记后面。与将其放在文档开头相比,这几乎无关紧要


安置是否解决了你真正的问题是一件完全不同的事情。你应该问一个单独的问题,清楚地描述问题,而不是假设的解决方案,最好用一些演示问题的代码来说明。

脚本得到执行,但DOCTYPE字符串之前的任何元素的标记都会引起一些浏览,这意味着大量缺乏文档记录的怪癖和奇怪之处,还有混乱

因此,无论您的理由是什么,您至少应该将元素放在第一个语法正确的位置,即标记后面。与将其放在文档开头相比,这几乎无关紧要


安置是否解决了你真正的问题是一件完全不同的事情。你应该问一个单独的问题,清楚地描述问题,而不是假设的解决方案,最好用一些代码来说明问题。

你想解决什么问题?为什么您要使用XHTML doctype和标记,然后将内容类型声明为HTML?这将使IEs进入怪癖模式,我怀疑您是否希望在IE5.5中运行页面。@Pointy:因为没有人被告知XHTML的正确内容类型,即使每个人都学过,他们也不能在几年前使用这些知识,因为IE直到第9版才开始支持它。@user1360809这并不能解决这个问题。由于代码运行时文档不存在,因此您的代码将无法访问任何页面元素。答案很简单:不要这样做。您试图解决什么问题?为什么您要使用XHTML doctype和标记,然后将内容类型声明为HTML?这将使IEs进入怪癖模式,我怀疑您是否希望在IE5.5中运行页面。@Pointy:因为没有人被告知XHTML的正确内容类型,即使每个人都学过,他们也不能在几年前使用这些知识,因为IE直到第9版才开始支持它。@user1360809这不会解决问题
我有这个问题。因为代码运行时文档不存在,所以您的代码将无法访问任何页面元素。答案很简单:不要这样做。