Как вставить <script>с прототипом? - PullRequest
4 голосов
/ 16 января 2010

Я использую функцию вставки Prototype, чтобы добавить html, который содержит <script>...</script>. И в этом сценарии я определяю новую функцию. И пока я читаю здесь Prototype запускает скрипт, который находится внутри тегов <script>, а затем удаляет его, но все функции должны оставаться доступными. Но с этого момента я не могу запустить свою новую функцию.

 $('some_id').insert({ bottom: '<script> ... </script>' });

Как это решить? Лучше всего, если он не удалит теги <script>.

EDIT:

К настоящему времени я сделал это так:

var add_here = document.getElementById('prepayment_group_items');
var src = document.createElement('div');
src.innerHTML = 'a lot of html with script tags';
add_here.appendChild(src);

Ответы [ 3 ]

2 голосов
/ 16 января 2010

Эта функция добавит тег script к заголовку страницы, с любым содержимым, которое вы передадите.

function insertScript(script_text) {
    var script_tag = document.createElement('script');
    script_tag.type = "text/javascript";

    var script = document.createTextNode(script_text);
    script_tag.appendChild(script);

    document.getElementsByTagName('head')[0].appendChild(script_tag);
}

Я больше знаком с jQuery, чем с Prototype, поэтому я просто сделал это в чистом видеJS.

Переведите часть, где я создаю элемент, и часть, где я получаю элемент HEAD, в Prototype, если хотите, но используйте вызов appendChild вместо insert * 1009 Prototype.* функция, так как она будет просто делать то, что вы просите, а не оценивать JS.

Конечно, теперь, когда я смотрю на то, что вы просите, вы также можете просто попробовать изменить код, который вывставляете что-то вроде:

window.update_12345 = function() {...}

Я не уверен, подойдет ли вам это или нет, но стоит попробовать.

0 голосов
/ 09 мая 2012

попробуйте это ..

    $('<script></script>',{
     type:'custom',
     id:'script1'
    }).appendTo('head').attr('type','text/javascript');

    $('#script1').append(< add js code here >);

});

0 голосов
/ 22 марта 2010

Если вы хотите включить JavaScript в голову, вы можете сделать что-то вроде этого:

$$('head').first().insert({
    bottom: new Element('script', {
        type: 'text/javascript'
    }).update('function helloWorldToConsole(){console.log("Hello World!")}')
});

Это создаст новый тэг SCRIPT и вставит его внизу ГОЛОВКИ. Но было бы гораздо приятнее, если бы вы добавили внешний файл JavaScript, подобный этому:

$$('head').first().insert({
    bottom: new Element('script', {
        type: 'text/javascript',
        src: 'http://www.example.com/path/file.js'
    })
});

Вы можете использовать функции позже в ваших скриптах.

...