Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypty JS w divie
michalcpp
post 7.07.2015, 09:36:27
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 4.07.2015

Ostrzeżenie: (0%)
-----


Mam na mojej stronie dwa pliki: index.php i settings.php;
Na stronie index.php znajduje sie div do ktorego laduję zawartość strony settings.php za pomocą ajax'a. Strona sie dobrze laduje do diva, lecz wszystkie skrypty JS na tej stronie nie dzialaja poprawnie. Gdy wchodze normalnie do pliku settings.php wszystkie skrypty dzialają, lecz gdy laduję ją do diva, zaden skrypt JS nie dziala.
Go to the top of the page
+Quote Post
Comandeer
post 7.07.2015, 10:54:32
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


jQuery radzi sobie z tym tak, że skrypty przepuszcza przez eval (czyli marnie sobie radzi wink.gif).

Co to są za skrypty? Nie da się ich po prostu przerzucić do callbacku żądania ajaksowego?


--------------------
Go to the top of the page
+Quote Post
michalcpp
post 7.07.2015, 11:17:36
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 4.07.2015

Ostrzeżenie: (0%)
-----


Są to skrypty JQuery UI, na przyklad takie:

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2. $("#potwierdz")
  3. .mouseover(function() {
  4. $("#potwierdz").stop().animate({left: 300, height: 50, width: 50}, {duration: 300, easing: 'easeOutBack'});
  5. })
  6. .mouseout(function() {
  7. $("#potwierdz").stop().animate({left: 305, height: 40, width: 40}, {duration: 300, easing: 'easeOutBack'});
  8. });
  9.  
  10. });
[JAVASCRIPT] pobierz, plaintext


jak wejde na strone settings.php (na ktorej wlasnie sa te skrypty) to wszystko dziala poprawnie, lecz skrypty nie dzialaja gdy laduję ja do diva za pomoca ajax'a w taki sposob:

[JAVASCRIPT] pobierz, plaintext
  1. var object = false;
  2.  
  3. if (window.XMLHttpRequest) object = new XMLHttpRequest();
  4. else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");
  5.  
  6. if (object.readyState==4 || object.readyState==0)
  7. {
  8. var obj = document.getElementById('DivUstawienia');
  9. object.open("GET", 'settings.php');
  10. object.onreadystatechange = function()
  11. {
  12. if (object.readyState == 4 && object.status == 200)
  13. obj.innerHTML= object.responseText;
  14. }
  15. object.send(null);
  16. }
[JAVASCRIPT] pobierz, plaintext

Go to the top of the page
+Quote Post
nospor
post 7.07.2015, 11:21:36
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skoro uzywasz jQuery to i do ajaxa i innych przypisan uzywaj jQuery a wszystko bedzie dzialac.
.innerHTML nie interpretuje kodu js - zagadka rozwiązana

zamiast:
obj.innerHTML= object.responseText;

daj:
jQuery(obj).html(object.responseText);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michalcpp
post 7.07.2015, 11:48:34
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 4.07.2015

Ostrzeżenie: (0%)
-----


Uzylem tego
jQuery(obj).html(object.responseText);
zamiast
obj.innerHTML= object.responseText;
i strona przestala dzialac...

Gdy probuje wejsc na strone login.php(na niej znajduje sie ten skrypt ladujacy strone settings.php do diva) przez sekunde cala zawartosc ztrony jest wyswietlana, lecz pozniej wszystko znika,a w konsoli chrom'a wyswietla sie tylko takie cos:
  1. <head>
  2. <script type="text/javascript" charset="iso-8859-2" src="http://go.idmnet.bbelements.com/please/showit/0/0/0/1/? typkodu=js&one2n1=/1276/1/1/1/;1276.1.1.1;&one2n=1&ubl=pl&ucd=24&uce=1&uje=1&uah=1040&uaw=1920&uhe=1080&uwi=1920&uto=-120&uti=1436265954249&ibbid=BBID-01-01109791535818535&alttext=0&border=0&bust=0.30917197722010314&target=_top"></script>
  3. </head>
  4. </html>

a strona sie ciagle laduje i nic to nie daje

A gdy wejde na strone settings.php wszystko dziala poprawnie.

Ten post edytował michalcpp 7.07.2015, 11:49:45
Go to the top of the page
+Quote Post
nospor
post 7.07.2015, 11:50:47
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




POkaz jak DOKLADNIE wyglada plik settings.php oraz login.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Comandeer
post 7.07.2015, 11:51:23
Post #7





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Masz użyć zamiast całego tego ajaksa jego odpowiednika w jQuery ALBO przerzucić wywołania tych funkcji do object.onreadystatechange (proponuję rozwiązanie #1)

Co do problemu z login.php - wygląda jak jakiś skrzaczony skrypt reklam…

Ten post edytował Comandeer 7.07.2015, 11:52:03


--------------------
Go to the top of the page
+Quote Post
tzm
post 7.07.2015, 12:56:51
Post #8





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Delegacje w jQuery ?

  1. $(document).on('event', 'selektor', function(){});


Ten post edytował tzm 7.07.2015, 12:57:02
Go to the top of the page
+Quote Post
Comandeer
post 7.07.2015, 13:23:44
Post #9





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


@tzm tak byłoby prosto, gdyby nie to, że jQuery UI nie bardzo z tym działa wink.gif Ono musi operować na konkretnym elemencie. Dlatego najlepiej jest wywoływanie jego metod przerzucić jako callback dla Ajaksa. Inny sposób to podpięcie się przez MutationObserver i badanie czy nowy element tego typu nie jest wstawiany do dokumentu. Odmianą tego sposobu jest podpięcie w CSS animacji/przejścia do tego elementu i wykrywanie wstawienia go przez animationstart/transitionstart.

Inna rzecz, że pokazany tutaj skrypt z $.fn.mouseover faktycznie bez problemu zadziała z event delegation (bo nie jest to jQuery UI, jak głosi reszta postu).


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 20:17