gpt4 book ai didi

javascript - 元素在 DOM 中是否始终可用,即使在 HTML 标记中不存在?

转载 作者:技术小花猫 更新时间:2023-10-29 12:25:35 24 4
gpt4 key购买 nike

我观察到的每个浏览器都会创建一个 <head>即使没有显式 <head></head> 也可以在 DOM 中访问的元素文档标记中的标记。

但是,Google Analytics 使用以下代码进行动态脚本插入:

(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
})();

下面一行:

(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);

似乎对 <head> 的情况做出特殊让步。元素不存在。

这只是极端向后兼容性的情况(例如,对于 Netscape 4 等),还是有理由不假设现代浏览器(即 Internet Explorer 6 和更新版本)将始终可以访问 <head> DOM 中的元素?

最佳答案

现代浏览器会在需要时为您创建 head 元素。

但是如果您希望您的代码是防弹的,假设客户端会这样做是不明智的。因此,Google 员工是保守和安全的。

他们声明中的额外条款是微不足道的,但增加了额外的可靠性。所以这是一件好事。

ps 很好地解决了问题并提取了相关代码。

添加:

HTML spec说 head 标签是可选的。我不认为规范要求浏览器在 dom 中创建头部“元素”。 Google 不想(也不应该)指望它在那里。

关于javascript - <head> 元素在 DOM 中是否始终可用,即使在 HTML 标记中不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3593600/

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