Ajax javascript innerHTML
Ostatnio zmodyfikowano 2020-07-30 19:51
Kinzoku99 Temat założony przez niniejszego użytkownika |
Ajax javascript innerHTML » 2020-07-30 18:17:13 Mam taką funkcję ajaxopodobną w javascripcie. Niestety metoda innerHTML ignoruje skrypty javascripta w przemieszanych plikach (np url = "costam.php") przez co zawartość nie działa poprawnie. Da się ją jakoś zmodyfikować żeby sobie radziła z tym? Może być dodatkowe magiczne JQuery czy nawet jakiś kod PHP typu POST GET, byleby działało ;) function loadDoc(url) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if(this.readyState == 4 && this.status == 200) { document.getElementById("page").innerHTML = this.responseText; } }; xhttp.open("GET", url, true); xhttp.send(); }
|
|
killjoy |
» 2020-07-30 18:42:45 Funkcja wygląda na poprawną - odpaliłem na minimalnym serwerze http pythona i działa. Jesteś pewien, że odwołujesz się do poprawnego URI (jeżeli wpiszesz tak jak podajesz w poście, będziesz się odwoływał relatywnie do obecnej lokacji np. http://127.0.0.1/asd -> http://127.0.0.1/asd/costam.php.). Jaki status zwraca XMLHttpRequest w callbacku? A może ładujesz jakąś zewnętrzną stronę i blokuje to CORS? Spójrz na konsolę JS w przeglądarce, mogą tam być przydatne informacje. |
|
Kinzoku99 Temat założony przez niniejszego użytkownika |
» 2020-07-30 19:18:41 Ogólnie to cała zawartość się pokazuje z HTML i CSS taka jak powinna. Problem w tym, że np mam skrypt video.js: var v = document.getElementsByTagName('video')[0]; v.addEventListener('timeupdate', function() { var p = document.getElementsByTagName('progress')[0]; p.value = 100*this.currentTime/this.duration; });
To jest plik galeria.php <video width="480" height="270" autoplay=false> <source src="galeriafilm.mp4" type="video/mp4"> Twoja przegladarka nie wspiera elementu video. </video> <nav> <button id="start" onclick="v.play()">Play</button> <button id="stop" onclick="v.currentTime=0;v.pause()">Stop</button> <button id="pause" onclick="v.pause()">Pause</button> <progress value="0" max="100" step="0.1"></progress> </nav>
<script src="video.js"></script>
I wrzucam to funkcją, którą wysłałem w temacie do diva "page" w pliku index.php. Okazuje się, że wszystko działa oprócz skryptu video.js jakby był ignorowany... |
|
DejaVu |
» 2020-07-30 19:28:51 Wciśnij CTRL+SHIFT+I w przeglądarce, odśwież stronę i zobacz czy masz błędy (jeżeli tak to jakie). |
|
Kinzoku99 Temat założony przez niniejszego użytkownika |
» 2020-07-30 19:35:46 |
|
killjoy |
» 2020-07-30 19:38:35 |
|
Kinzoku99 Temat założony przez niniejszego użytkownika |
» 2020-07-30 19:51:11 var setInnerHtml = function(elm, html) { elm.innerHTML = html; var scripts = elm.getElementsByTagName("script"); var scriptsClone = []; for (var i = 0; i < scripts.length; i++) { scriptsClone.push(scripts[i]); } for (var i = 0; i < scriptsClone.length; i++) { var currentScript = scriptsClone[i]; var s = document.createElement("script"); for (var j = 0; j < currentScript.attributes.length; j++) { var a = currentScript.attributes[j]; s.setAttribute(a.name, a.value); } s.appendChild(document.createTextNode(currentScript.innerHTML)); currentScript.parentNode.replaceChild(s, currentScript); } }
Ta funkcja robi co potrzeba jak się ją da zamiast elm.innerHTML = html. Zamykam temat ;) |
|
« 1 » |