Pergunta

Estou usando a função de inserção de protótipo para aplicar algum html que contém <script>...</script>. E dentro deste script, estou definindo uma nova função. E enquanto eu leio aqui O protótipo executa o script que está dentro <script> tags e depois remove, mas todas as funções devem permanecer acessíveis. Mas a partir desse momento não posso executar minha nova função.

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

Como resolvê -lo? O melhor seria que não remove <script> Tag.

EDITAR:

Até agora eu fiz assim:

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);
Foi útil?

Solução

Esta função adicionará uma tag de script à cabeça da página, com o conteúdo que você a passar.

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);
}

Estou mais familiarizado com o jQuery do que o protótipo, então fiz isso no Pure JS.

Traduza a parte em que eu crio o elemento e a parte em que coloco o elemento da cabeça em protótipo, se quiser, mas use a chamada para AppendChild em vez de protótipo inserir Função, pois fará o que você pedir, em vez de avaliar o JS.

Claro, agora que eu olho para o que você está pedindo, você também pode tentar alterar o código que está inserindo para algo como:

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

Não tenho certeza se isso vai se encaixar ou não, mas vale a pena tentar.

Outras dicas

Se você quiser incluir JavaScript na cabeça, você pode fazer algo assim:

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

Isso cria uma nova etiqueta de script e a insere no fundo da sua cabeça. Mas seria muito melhor se você adicionar um arquivo JavaScript externo como este:

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

Você pode usar as funções posteriormente em seus scripts.

tente isso ..

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

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

});

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top