Не могу добавить элемент <script> - PullRequest
268 голосов
/ 04 марта 2009

Есть идеи, почему фрагмент кода ниже не добавляет элемент script в DOM?

var code = "<script></script>";
$("#someElement").append(code);

Ответы [ 18 ]

1 голос
/ 14 июня 2015

Это то, что я считаю лучшим решением. Google Analytics вводится таким образом.

var (function(){
    var p="https:" == document.location.protocol ? "https://" : "http://";
        d=document,
        g=d.createElement('script'),
        s=d.getElementsByTagName('script')[0];
        g.type='text/javascript';
        g.src=p+'url-to-your-script.js';
        s.parentNode.insertBefore(g,s); })();
1 голос
/ 21 июня 2013

Ваш скрипт выполняется, вы просто не можете использовать document.write из него. Используйте оповещение для проверки и избегайте использования document.write. Операторы вашего js-файла с document.write не будут выполнены, а остальные функции будут выполнены.

0 голосов
/ 06 января 2018

Я написал пакет npm, который позволяет вам взять строку HTML, , включая теги сценария , и добавить ее в контейнер при выполнении сценария

Пример:

import appendHtml from 'appendhtml';

const html = '<p>Hello</p><script src="some_js_file.js"></script>'; 
const container = document.getElementById('some-div');

await appendHtml(html, container);

// appendHtml returns a Promise, some_js_file.js is now loaded and executed (note the await)

Найдите это здесь: https://www.npmjs.com/package/appendhtml

0 голосов
/ 30 декабря 2017

Можно попробовать вот так

var code = "<script></" + "script>";
$("#someElement").append(code);

Единственная причина, по которой вы не можете сделать "<script></script>", заключается в том, что строка не разрешена внутри javascript, потому что слой DOM не может анализировать, что такое js и что такое HTML.

0 голосов
/ 04 ноября 2017

Я попробовал это один и работает нормально. Просто замените символ < на этот \x3C.

// With Variable
var code = "\x3Cscript>SomeCode\x3C/script>";
$("#someElement").append(code);

или

//Without Variable
$("#someElement").append("\x3Cscript>SomeCode\x3C/script>");

Вы можете проверить код здесь .

0 голосов
/ 08 ноября 2016

Просто создайте элемент, проанализировав его с помощью jQuery.

<div id="someElement"></div>
<script>
    var code = "<script>alert(123);<\/script>";
    $("#someElement").append($(code));
</script>

Рабочий пример: https://plnkr.co/edit/V2FE28Q2eBrJoJ6PUEBz

0 голосов
/ 25 мая 2016

Другой способ сделать это, если вы хотите добавить код, это использовать метод document.createElement, но затем использовать .innerHTML вместо .src.

var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.innerHTML = 'alert("Hey there... you just appended this script to the body");';
$("body").append( script );
0 голосов
/ 04 февраля 2015

Добавить скрипт к телу:

$(document).ready(function() {
    $("<script>", {  src : "bootstrap.min.js",  type : "text/javascript" }).appendTo("body");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...