- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
以下两种向页面添加脚本的方式在加载\执行时间上是否存在差异?
<script>
document.write('<script src=someScript.js></script>');
</script>
对比这个:
<script>
var s=document.createElement('script');
s.src='someScript.js';
document.body.appendChild(s);
</script>
假设两者都添加在页面上的相同位置(在结束 body 标记之前)。
感谢任何信息!
编辑:感谢大家的评论和回答。我实际上是在寻找有关加载时间和/或执行差异的具体信息(如果有的话?)。此外,我可以在 DOM 仍在解析时放置两者。再次感谢您对此的任何指点!!
最佳答案
我在研究相同内容时遇到了这个问题。经过一些测试后,我得出结论,是的,这两种方法之间存在主要差异。在现代浏览器上,这与其说是加载或执行时间,不如说是脚本被评估的顺序。例如,如果您有以下内容:
一些脚本.js
console.log('2');
index1.htm
<script>
console.log('1');
var script = document.createElement('script');
script.src = 'someScript.js';
document.write(script.outerHTML);
</script>
<script>
console.log('3');
</script>
index2.htm
<script>
console.log('1');
var script = document.createElement('script');
script.src = 'someScript.js';
document.body.appendChild(script);
</script>
<script>
console.log('3');
</script>
在您的控制台上运行 index1.htm
将为您提供序列“1, 2, 3”。运行 index2.html 将为您提供序列“1、3、2”。如果请求了外部脚本,这些脚本将在两种方法的动态请求的 someScript
之前加载。
需要注意的重要一点是执行顺序。正如 jack 在评论中指出的那样,使用 document.write
是不受欢迎的。如果您的脚本不在 html 文档的末尾,这是正确的,因为它会阻止您的网页呈现。我不太确定,如果您的脚本位于底部,情况是否仍然如此。
尽管如此,您仍然可以使用回调函数来强制执行 javascript 的顺序。
关于javascript - document.write 与 appendChild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22172589/
从逻辑上讲,我想在 div 的链接中嵌入图像。我已经使用链接或图像成功完成了此操作。为了我的目的,我什至并行地使用了链接和图像(这是无用的)。但似乎无法将图像包裹在 div 内的链接中。 var di
我需要将特殊的 iconfont 子节点插入到基础文档中。 我需要的字符序列是“fT”,我将它包裹在一个跨度中,为它提供我想要的字体的颜色和大小。 问题是我附加此“注释”子项的基本文档的父节点有时可能
我正在学习 appendChild 并且到目前为止想出了这段代码: var blah = "Blah!"; var t = document.createElement("table"), tb
我想通过同一页面上的按钮和事件处理程序将相同的内容重复附加到元素。 我遇到的问题是它只在第一次有效。它第一次做的正是我想要的,然后在随后的按钮按下时什么也做不了。我查了一下,似乎在第一次追加之后,“n
我正在尝试在 JavaScript 中创建一个元素并按类名将其应用于所有元素。对于这个例子,我将使用一个段落来方便。然而,通过 JavaScript 创建元素的目的是因为我想稍后在我的代码中创建一个不
我正在尝试输入一个问题,并将该问题显示为表单“调查表单”中的一个元素。但是,当我使用 JavaScript 将子节点附加到“调查表单”时,文本会出现半秒然后消失。似乎标签元素被附加但随后被删除。知道如
请参阅here . 我们有这样的 JavaScript 代码: document.addEventListener("DOMContentLoaded", function(event) { le
所以我尝试向单选按钮输入添加属性,特别是 Javascript 中的名称属性。我将子对象附加到主对象,并且当我使用 Object.setAttribute("name", value); 时然后检查附
我下面有 JS,一旦单击图像下方的图像,我会尝试显示菜单项,一旦单击某个项目,它就会消失。我有多个图像,这就是我构建这个动态内容菜单的原因。我计划在 userMenuContent 中添加一堆 htm
根据文档https://developer.mozilla.org/en-US/docs/DOM/Node.appendChild 、appendChild 将一个节点添加到指定父节点的子节点列表的末
我正在尝试以类似表格的方式打印出所有数组项。我正在创建一个 标题标签,以及 数组中每个元素的标签(与 headers 数组分开)。每当我尝试这样做时,我都会得到预期的结果,但所有数组元素都只是一个长字
有几个问题与同一段代码相关,包括这个:Understanding JavaScript Styling同样,这摘自本书Secrets of the JavaScript Ninja
所以我有一个 div 元素,它将使用 appendChild 方法动态填充其他 div,这应该显示一个列表。用户现在可以使用 JqueryUI Sortable 选项对该列表进行排序。 我还添加了一些
我正在尝试使用超链接将一些 HTML 数据插入 div 标记,单击超链接时会调用 Javascript 函数。 HTML 数据有效,我要显示的项目出现,但执行后立即消失。 我尝试过 event.pre
除了 saved 变量中列出的这些元素之外,以下代码删除特定元素的所有子元素。 let rightCol = document.querySelector("#rightCol"); let save
我的代码是为了添加另一段hello单击“新建”按钮后,在现有的 2 个下。 错误一定是在传递来自onclick 的值时发生的函数或 createTextNode或 appendChild() (不是在
appendChild()函数属于什么对象? 最佳答案 一个 DOM 节点/元素。 interface Node { // NodeType const unsigned short
嘿,我正在尝试 appendChild() 两个连续的 div,但我期望的结果是它们并排放置,但它们像这样一个在另一个之上: 1st div 2nd div 代替第一格第二格 var addBudCo
我正在使用 Google Maps Javascript 创建 map 。我需要对本创建的每个标记进行计数,并将此计数放在一个 DIV 中。scipt 收集计数,但它显示每个标记的计数。例如,如果查询
当我将一个 div 发送到一个为文档片段创建内容的函数时,当我将该片段附加到 div 时,它会向我提供此错误。 Object column_left has no method 'appendChil
我是一名优秀的程序员,十分优秀!