如何在javascript中附加<script> </ script>?

Dav*_*vid 90 javascript jquery append appendchild

我需要使用childappend或jquery append()将一些标记内容附加到文档中.据我所知,这已被剥夺.谁知道怎么做?

Den*_*nis 183

// Create the element

var script = document.createElement("script");

// Add script content

script.innerHTML = "...";

// Append

document.head.appendChild(script);
Run Code Online (Sandbox Code Playgroud)

要么

document.body.appendChild(script);
Run Code Online (Sandbox Code Playgroud)

  • 加上一个因为本机实现 (19认同)
  • 这应该是接受的答案。当前接受的答案不允许以这种方式加载 jQuery。 (3认同)
  • 我不会使用 `innerHTML`,而是使用 `script.src` (2认同)

Sap*_*kar 130

试试这个:

var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://somedomain.com/somescript";
$("head").append(s);
Run Code Online (Sandbox Code Playgroud)

请注意,脚本将加载,您可以访问其中的变量,但您不会<script>在DOM中看到实际的标记.

  • 检查元素,你会看到 (3认同)
  • 此方法会生成警告,即同步加载脚本会对用户体验产生不利影响.假设您要在正在加载的javascript中调用某些内容,则应该异步加载它,并使用回调方法来运行依赖于新脚本的代码.http://stackoverflow.com/questions/7718935/load-scripts-asynchronously#7719185 (2认同)

qwe*_*ymk 49

$('<script>alert("hi");</' + 'script>').appendTo(document.body);
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 你不能做`$('<script> </ script>')`的唯一原因是因为在javascript中不允许使用字符串`</ script>`,因为DOM层无法解析js和什么是js HTML.你甚至可以用`$('<script> <\/script>')来解决这个限制 (16认同)

Nic*_*tti 20

如果您需要附加一个脚本以便解析它,您可以像谷歌那样为他的+1按钮做

  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'link to your script here';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
Run Code Online (Sandbox Code Playgroud)


小智 19

这对我有用..

<script>
    $('head').append("<script>your script content here<\/script>");
</script>
Run Code Online (Sandbox Code Playgroud)

请注意,内部的"/" </script>已被转义为"<\/script>".如果不是,它实际上会关闭外部<script>标签.

添加的脚本不会显示但会被执行.希望有所帮助.