2013-03-07 9 views
6

Use Case: ich auf einem Template Builder arbeite Anwendung.Verfahren Benutzer HTML-Vorlagen mit verschiedenen Komponenten wie Textfeld bauen, Bildfeld, Diashow usw.Add/append '<script>' tag Javascript/jquery html mit

Ausgabe: Das Problem, das wir gegenüberstellen, ist mit der Diashow-Komponente.Wir verwenden ein nivoslider Plugin für den Aufbau. Der Schieberegler muss Einstellungen wie der Benutzer kann Übergangszeit ändern, Übergang usw. auswählen.Der Benutzer kann mehr hinzufügen als Diashow.
Jetzt ist das Problem, wenn wir mehrere Diashows hinzufügen, jeder kann seine eigenen Parameter dafür haben, so dass wir keine gemeinsame Funktion haben können. Auch kann der Benutzer zurückkommen, um die Vorlage zu bearbeiten, so dass wir für jedes Skript unabhängiges haben müssen Diashow.

Reasearch: Wir haben die Grundstruktur arbeiten, aber an einem place.we stecken müssen eine script Tag jeweils auf die Seite durch den Benutzer Diashow hinzugefügt anhängen.

return '<div id="slider" class="nivoSlider">'+ 
      '<div class="">'+ 
       '<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide01.jpg" data-thumb="images/slideShow/thumb/slide01.jpg" alt="" />'+ 
      '</div>'+ 
      '<div class="">'+ 
       '<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide02.jpg" data-thumb="images/slideShow/thumb/slide02.jpg" alt="" />'+ 
      '</div>'+ 
      '<div class="">'+ 
       '<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide03.jpg" data-thumb="images/slideShow/thumb/slide03.jpg" alt="" />'+ 
      '</div>'+ 
      '<div class="">'+ 
       '<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide04.jpg" data-thumb="images/slideShow/thumb/slide04.jpg" alt="" />'+ 
      '</div>'+ 
     '</div>'+'<script>$("#slider").nivoSlider({effect: "sliceDown",animSpeed: 500,pauseTime: 3000,startSlide: 0,controlNavThumbs: true,controlNavThumbsFromRel:true, pauseOnHover: true,manualAdvance: false});</script>'; 

Der Script-Tag am Ende des Codes ist es, was wir mit dem HTML anhängen versuchen, und speichern Sie sich auf die database.We versuchte in den Skript-Tag ein leeres <div id="temp"></div> und Anhänge zu haben, aber Ich glaube, jQuery führt das Skript und speichert es nicht, so dass wir ein leeres div.Wie können wir das Skript-Tag in der HTML-Struktur speichern und in der Datenbank speichern?

+2

'arbeiten kann seine eigenen Parameter haben, so können wir eine gemeinsame function.' nicht haben - Können Sie nicht eine Funktion erstellen, die diese Parameter akzeptiert, um zwischen den Schiebereglern zu unterscheiden? – Andy

+0

Auch wenn jeder einzelne Parameter haben kann, könnten Sie immer noch eine Funktion haben. Erlauben Sie dem Benutzer nur, aus einer Liste von Parametern auszuwählen und dann alle innerhalb der Funktion zu berücksichtigen. Wenn der Benutzer keinen Parameter ausgewählt hat, wird er ausgeschlossen –

+1

Es wird auch fehlschlagen, wenn Sie mehr als einen hinzufügen, da Sie nur EINE ID auf der Seite haben können. Ids sind einzigartig! – epascarello

Antwort

5

Anstatt das Skript-Tag direkt zu schreiben, erstellen Sie es als ein Objekt und hängen es dann an. Der Browser sollte dies respektieren, wenn Sie das Element direkt erstellt haben, anstatt ihm eine Zeichenfolge zu übergeben.

var script = document.createElement("script"); 
script.type = "text/javascript"; 
script.src = "scriptname.js"; 
$("#temp").append(script); 

Dann können Sie die Javascript Sie in der externen Skriptdatei ausführen setzen nur wollen, und es sollte für sie in Ordnung

+0

Ja ben versuchte es, aber das Problem ist, dass ich es später veröffentlichen (d. H. Es speichern) auf andere Domäne von Benutzer erstellt, so will ich es inline anstelle von externen haben! Irgendwelche andere Arbeit um? Vielen Dank für die Antwort – KillABug