2013-03-07 19 views
6

przypadków użycia: Pracuję na szablonie konstruktora application.A użytkownik może budować szablony HTML za pomocą różnych elementów, takich jak pole tekstowe, pole obrazu, pokaz slajdów itpDodaj/append „<script>” tag html za pomocą JavaScript/jQuery

Problem z którym mamy do czynienia to komponent pokazu slajdów. Używamy wtyczki nivoslider do jej budowy. Suwak musi mieć ustawienia takie jak użytkownik może zmienić czas przejścia, wybrać przejście itp. Użytkownik może dodać więcej niż pokazy slajdów.
Problem polega na tym, że dodajemy wiele pokazów slajdów, każdy z nich może mieć swoje własne parametry, więc nie możemy mieć wspólnej funkcji. Ponadto użytkownik może wrócić do edycji szablonu, więc musimy mieć niezależny skrypt dla każdego z nich. pokaz slajdów.

Reasearch: Mamy podstawową strukturę pracy, ale utknął w jednej place.We trzeba dołączyć script tag do każdego Pokaz slajdów dodane do strony przez użytkownika.

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>'; 

Znacznik skrypt na końcu kodu jest to, co staramy się dołączyć do HTML i zapisać go do database.We próbował mając pustą <div id="temp"></div> i dodanie znacznika script w nim, ale Wierzę, że jQuery wykonuje skrypt i nie zapisuje go, więc otrzymujemy pusty div.Jak można przechowywać tag skryptu w strukturze HTML i zapisać go w bazie danych?

+2

'mogą mieć swoje własne parametry, więc nie możemy mieć wspólny function.' - nie możesz utworzyć funkcji, która akceptuje te parametry, aby rozróżnić suwaki? – Andy

+0

Nawet jeśli każdy z nich może mieć oddzielne parametry, nadal można mieć jedną funkcję. Po prostu pozwól użytkownikowi wybrać z listy parametrów, a następnie uwzględnij wszystkie z nich w funkcji. jeśli użytkownik nie wybrał parametru, to zostanie wykluczony –

+1

. Jeśli nie dodasz więcej niż jednego, możesz mieć tylko JEDEN identyfikator na stronie. Identyfikatory są pojedyncze! – epascarello

Odpowiedz

5

Zamiast bezpośrednio zapisywać znacznik skryptu, należy go utworzyć jako obiekt, a następnie dołączyć do niego. Przeglądarka powinna ją respektować, gdy element zostanie utworzony bezpośrednio, zamiast przekazywać ciąg znaków.

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

Następnie można po prostu umieścić skrypt który chcesz wykonać w pliku skryptu zewnętrznego i powinien działać dobrze

+0

Tak, Ben próbował, ale problem polega na tym, że muszę go później opublikować (tj. Zapisać) w innej domenie utworzonej przez użytkownika, więc chcę mieć to w linii, a nie na zewnątrz! – KillABug