gpt4 book ai didi

javascript - innerHTML 究竟是什么,document.write 是如何工作的?

转载 作者:太空狗 更新时间:2023-10-29 15:08:03 26 4
gpt4 key购买 nike

考虑以下几点:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
document.write('<script type="text/javascript" src="script2.js"></scr'+'ipt>');
document.write('<script type="text/javascript" src="script3.js"></scr'+'ipt>');
console.log(document.getElementsByTagName("script").length + " Scripts");
console.log(document.head.innerHTML);
</script>
</head>
<body>
</body>
</html>

您希望 console.log 包含什么?我希望您能得到我期望的两种结果之一:4 Scripts 以及 head 的 innerHTML (document.write) 中显示的两个现有或全部四个脚本标签也可以写入正文,因此可以预期脚本标签将作为正文的子项注入(inject))。

问题是,在Chrome和IE11中,通过document.write添加的第一个script标签显示在head的innerHTML中,而第二个则没有,DOM查询结果为3 个脚本

谁能详细说明一下?

最佳答案

让它有机会在 Chrome 中呈现作品:

在脚本中我有 script.js: x=1, script2.js: y=1 和 script3.js:z=1

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
console.log("after 1",x);
document.write('<script type="text/javascript" src="script2.js"><\/script>');
document.write('<script type="text/javascript" src="script3.js"><\/script>');
setTimeout(function() {
console.log(document.getElementsByTagName("script").length + " Scripts");
console.log(document.head.innerHTML);
console.log("after 3",x,y,z)
},100); // the milliseconds MAY need to be higher over the net
</script>
</head>
<body>
</body>

结果:

4 Scripts

<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
document.write('<script type="text/javascript" src="script2.js"><\/script>');
document.write('<script type="text/javascript" src="script3.js"><\/script>');
setTimeout(function() {
console.log(document.getElementsByTagName("script").length + " Scripts");
console.log(document.head.innerHTML);
console.log("after 3",x,y,z)
},10)
</script><script type="text/javascript" src="script2.js"></script><script type="text/javascript" src="script3.js"></script>

after 3 1 1 1

关于javascript - innerHTML 究竟是什么,document.write 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29557911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com