2010-01-15 3 views
4

J'utilise la fonction d'insertion de prototype pour apposer du code HTML qui contient <script>...</script>. Et dans ce script, je définis une nouvelle fonction. Et pendant que je lis here Prototype exécute le script qui se trouve à l'intérieur des balises <script>, puis le supprime, mais toutes les fonctions doivent rester accessibles. Mais à partir de ce moment, je ne peux pas exécuter ma nouvelle fonction.Comment insérer <script> avec Prototype?

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

Comment le résoudre? Le mieux serait qu'il ne supprime pas les balises <script>.

EDIT:

Maintenant, je l'ai fait comme ceci:

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); 
+0

Vous pouvez inclure le script que vous essayez d'exécuter dans votre exemple. En outre, vous pouvez essayer d'ajouter: type = "text/javascript" à votre élément de script. – cjstehno

+0

Le script contient quelque chose comme: function update_38172() {...}. Où ce numéro est généré par Rails. Cette fonction fonctionne quand j'ajoute à ce script: update_38172(); ça marche, mais seulement une fois. Après l'insertion est terminée '

0

Si vous souhaitez inclure JavaScript dans la tête, vous pourriez faire quelque chose comme ceci:

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

Cela crée une nouvelle balise SCRIPT et insère au fond de votre tête. Mais il serait beaucoup plus agréable si vous ajoutez un fichier JavaScript externe comme celui-ci:

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

Vous pouvez utiliser les fonctions que plus tard dans vos scripts.

-1

try this ..

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

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

});

Questions connexes