【问题标题】:How to append <script></script> in JavaScript? [duplicate]如何在 JavaScript 中附加 <script></script>? [复制]
【发布时间】:2012-03-13 21:34:27
【问题描述】:

我需要使用appendChild() 或jQuey 的append() 将一些&lt;script&gt; 标签内容附加到文档中。据我所知,这正在被剥离。有人知道怎么做吗?

【问题讨论】:

  • 对该问题的第二个答案以 67 票获得,是一个非常好的答案,它将告诉您您需要知道的一切。
  • 只写&lt;script&gt;&lt;\/script&gt;而不是&lt;script&gt;&lt;/script&gt;

标签: javascript jquery append appendchild


【解决方案1】:
// Create the element

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

// Add script content

script.innerHTML = "...";

// Append

document.head.appendChild(script);

或者

document.body.appendChild(script);

【讨论】:

    【解决方案2】:

    试试这个:

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

    请注意,脚本将加载并且您可以访问其中的变量,但您不会在 DOM 中看到实际的 &lt;script&gt; 标记。

    【讨论】:

    • 检查元素,你会看到
    • 此方法会生成一个警告,指出同步加载脚本不利于用户体验。假设您想要在您正在加载的那个 javascript 中调用某些东西,它应该被异步加载,并使用一个回调方法来运行您的代码,该方法依赖于新脚本。 stackoverflow.com/questions/7718935/…
    • 您可以将 async 设置为 true。
    • s.type 不需要,shorter better
    • 如果您使用 XHTML 文档类型,则需要 @Timo type 来生成有效的 HTML。
    【解决方案3】:
    $('<script>alert("hi");</' + 'script>').appendTo(document.body);
    

    DEMO

    【讨论】:

    • 很酷,但这是如何工作的?我已经知道这个修复大约一年了,但仍然没有任何线索。
    • 你不能做$('&lt;script&gt;&lt;/script&gt;')的唯一原因是字符串&lt;/script&gt;在javascript中是不允许的,因为DOM层不能解析什么是js和什么是html。你甚至可以通过$('&lt;script&gt;&lt;\/script&gt;') 来绕过这个限制
    【解决方案4】:

    如果您需要附加一个脚本以便对其进行解析,您可以像 google 对他的 +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);
      })();
    

    【讨论】:

    • 做得很好...你应该把这个函数调用放在哪里?有关系吗? headbody
    • 不,它应该只在 dom 中……就这样……
    • 如果您的 HTML 中没有任何脚本标记,此代码将崩溃(s 未定义)(例如:&lt;!DOCTYPE html&gt;&lt;title&gt;Hello, World!&lt;/title&gt; - 这是有效的 HTML)
    【解决方案5】:

    这对我有用..

    <script>
        $('head').append("<script>your script content here<\/script>");
    </script>
    

    请注意,内部&lt;/script&gt; 的“/”已转义为"&lt;\/script&gt;"。如果不是,它实际上关闭了外部&lt;script&gt; 标签。

    添加的脚本不可见,但会被执行。 希望对您有所帮助。

    【讨论】:

    • 我用我的脚本尝试了所有其他方法,但这是唯一有效的方法!非常感谢!
    • 我尝试将 js 小部件(带有 html 和脚本标签)附加到 div。该解决方案完美运行!谢谢!
    【解决方案6】:
    $('your_document_selector').text('<script></script>')
    

    .text() 可以附加脚本标签,并将其呈现为 HTML。

    $('your_document_selector').append('&lt;script&gt;&lt;/script&gt;')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-23
      • 2019-02-25
      • 2012-08-24
      • 2014-11-02
      • 2011-05-13
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      相关资源
      最近更新 更多