gpt4 book ai didi

javascript - 通过 中的 javascript 在 之上添加 <script> 节点

转载 作者:行者123 更新时间:2023-11-28 12:21:12 27 4
gpt4 key购买 nike

我想插入一些 JavaScript 代码,

  1. 它应该在 <body> 中的其他 javascript 代码之前运行。运行。

  2. 当他们在 <body> 中操作 html 时,位于 <body> 内.

通常我会把这个 javascript 放在 <script> 中打开后立即标记<body>标签。但我不是直接写html。它是由程序为我生成的。 (react-storybook)。它的 API 允许在 <head> 中注入(inject) html但不是<body> .

<head>
<script></script> <-- I can inject a script tag here
</head>
<body>
<script></script> <-- I can't directly add this script tag but I need one here

<script>other js</script>
</body>

我尝试将我的js放入 document load事件处理程序,但它们在 body 完全加载后运行,因此其他 js 已经运行。

我尝试将我的js直接放在头部然后我的js无法使用appendChild在 body 上,因为那时document.body为空。

有没有办法插入满足上述要求的脚本标签,并且仅访问 <head>

最佳答案

我看不出有什么方法可以做到这一点,而不会破坏您正在尝试使用的工具并做一些相当令人讨厌的事情。我怀疑有更好的方法来解决您的根本问题。

I tried putting my js directly in the head then my js can't use appendChild on body, because at that point document.body is null...

这是令人讨厌的,可能是一个坏主意,但你可以强制启动主体:

document.write("<body>");

此时,解析器将创建 body 元素。然后,您可以使用 appendChild (或者继续使用邪恶的 document.write)。当主体稍后在正常过程中再次启动时,第二个开始标记将被忽略。

不是一个好主意。 React-storybook 是开源的。如果还没有办法用它来实现您的实际目标,我建议您对其进行修改,而不是像上面那样做。

下面是一个示例,已在 Chrome、Firefox、IE11、IE8 和 iOS Safari 中测试并运行。
( Live copy on JSBin ):

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Example</title>
<script>
(function() {
var d = document.createElement("div");
d.innerHTML =
"This is the element appended to the body element " +
"that we forced to be created using the evil " +
"<code>document.write</code>";
document.write("<body>");
document.body.appendChild(d);
})();
</script>
</head>
<body>
<div>
This is the first element inside the body element in the markup.
</div>
</body>
</html>

关于javascript - 通过 <head> 中的 javascript 在 <body> 之上添加 &lt;script&gt; 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38027776/

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