我刚刚做了一个小测试,如果我添加一个脚本,如下图所示,它似乎在大多数现代主流浏览器中执行。它在页面加载之前执行,我想知道这是否适用于所有浏览器(包括历史浏览器)?
<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>
我当然是想找到一种方法来执行一个脚本来设置一个页面之前,它的任何加载...任何输入到这一点将是非常感谢。会是错误的使用这种方法?
提前感谢您的帮助!
4条答案
按热度按时间zf2sa74q1#
脚本得到执行,但是标记(DOCTYPE字符串之前的任何元素)将一些浏览放到quirks mode,这意味着大量文档记录不充分的怪癖和古怪之处,以及混乱。
所以不管你的理由是什么,你至少应该把元素放在第一个语法正确的地方,也就是在
<head>
标签之后,这与把它放在文档的开头相比几乎没有什么关系。这个位置是否能解决你真实的的问题是完全不同的事情,你应该问一个单独的问题,清楚地描述问题(而不是假设的解决方案),最好用一些代码来说明问题。
xqnpmsa82#
根据说明书
符合HTML语法的文档必须由以下部分组成,按以下顺序:
1.单个U + FEFF字节顺序标记(BOM)字符。
1.任意数量的注解和空格字符。
1.* * 文档类型**。
1.任意数量的注解和空格字符。
1.* * 一个html元素,包括其属性(如果有)和内容(如果有)。**
浏览器遵循这些规范,您的代码(即使现在可以工作)将来可能会中断,因为它明显违反了元素顺序的规则。
其次,最好总是最后加载脚本以获得性能增益。
tquggr8v3#
您在评论中提到您希望在页面显示之前隐藏/显示元素,并且
onload
太慢。请尝试使用DOMContentLoaded
,因为它会在HTML DOM构建后但在加载所有图像、CSS和其他外部引用之前触发。这对我来说一直很有效--尽管我使用jQuery的
ready
事件来使它跨浏览器工作,并且它使HTML保持有效。bxjv4tth4#
我看到恶意的Javascript代码就是这样被注入的,它在WordPress页面的顶部制造了一个空白区域。如果你点击这个空白区域,你会被带到一个谈论加密的网站。恶意脚本使用Javascript atob()函数,当它被base64和html-escaped反转换时,会导致加密页面被加载。
你要知道...