![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 19 Dołączył: 30.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
jest funkcja: Kod <script type="text/javascript"> //aby dzialalo na IE (niewiem kto tego uzywa jeszcze) var ObiektXMLHttp = false; if (window.XMLHttpRequest){ ObiektXMLHttp = new XMLHttpRequest(); }else if(window.ActiveXObject){ ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); } function forum(){ if(ObiektXMLHttp){ //pobieranie danych ObiektXMLHttp.open("GET", 'forum_posts.html'); ObiektXMLHttp.onreadystatechange = function(){ if(ObiektXMLHttp.readyState == 4){ i = ObiektXMLHttp.responseText; document.getElementById('forum').innerHTML=i; } } ObiektXMLHttp.send(null); } } </script> Wczytuje ona posty forum do diva od id forum, w FF jest ok, Opera tak samo, niestety badzIEwIE kompletnie nie reaguje, przeładowuje dane dopiero po zamknięciu i otwarciu strony ponownie. Jakieś rady? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Jakieś rady? Tak, uzyj normalnej biblioteki js np. jQuery i nie baw sie juz wiecej w takie reczne rezanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
spróbuj tej konstrukcji:
Kod var ajax = false;
if(window.XMLHttpRequest) ajax = new XMLHttpRequest(); else if(window.ActiveXObject) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if(!ajax) { alert('Błąd przy tworzeniu obiektu AJAX! Aktualizacja danych jest niemożliwa.'); return false; } |
|
|
![]()
Post
#4
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Ja miałem problem w ie7 z innerHTML, jak tworzyłem dynamicznie listę opcji w <select>. Pomogła po dłuuugim szukaniu następująca funkcja:
Kod function select_innerHTML(objeto,innerHTML){
/****** * select_innerHTML - corrige o bug do InnerHTML em selects no IE * Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228 * Versão: 2.1 - 04/09/2007 * Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br * @objeto(tipo HTMLobject): o select a ser alterado * @innerHTML(tipo string): o novo valor do innerHTML *******/ objeto.innerHTML = "" var selTemp = document.createElement("micoxselect") var opt; selTemp.id="micoxselect1" document.body.appendChild(selTemp) selTemp = document.getElementById("micoxselect1") selTemp.style.display="none" if(innerHTML.toLowerCase().indexOf("<option")<0){//se não é option eu converto innerHTML = "<option>" + innerHTML + "</option>" } innerHTML = innerHTML.toLowerCase().replace(/<option/g,"<span").replace(/<\/option/g,"</span") selTemp.innerHTML = innerHTML for(var i=0;i<selTemp.childNodes.length;i++){ var spantemp = selTemp.childNodes[i]; if(spantemp.tagName){ opt = document.createElement("OPTION") if(document.all){ //IE objeto.add(opt) }else{ objeto.appendChild(opt) } //getting attributes for(var j=0; j<spantemp.attributes.length; j++){ var attrName = spantemp.attributes[j].nodeName; var attrVal = spantemp.attributes[j].nodeValue; if(attrVal){ try{ opt.setAttribute(attrName,attrVal); opt.setAttributeNode(spantemp.attributes[j].cloneNode(true)); }catch(e){} } } //getting styles if(spantemp.style){ for(var y in spantemp.style){ try{opt.style[y] = spantemp.style[y];}catch(e){} } } //value and text opt.value = spantemp.getAttribute("value") opt.text = spantemp.innerHTML //IE opt.selected = spantemp.getAttribute('selected'); opt.className = spantemp.className; } } document.body.removeChild(selTemp) selTemp = null } |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 19 Dołączył: 30.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tak, uzyj normalnej biblioteki js np. jQuery i nie baw sie juz wiecej w takie reczne rezanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) No ok, moje rozwiązanie w jquery: Kod <script src="http://code.jquery.com/jquery-latest.js"></script> <script> function get_forum(){ $("#forum").load("forum_posts.html"); }; $(document).ready(function(){ setInterval("get_forum()",500); }); </script> Lecz ten sam problem, w FF śmiga w IE muszę wyłączyć i włączyć przeglądarkę by jakiekolwiek zmiany ujrzały moje oczy... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Edit: Znalazłem coś w sieci, IE kaszani coś z pamięcią podręczną... co zrobić z tym: IE is using the cached version, since the URL hasn't changed. Try Cytat + '&nocache=' + Math.random()
at the end of the URL. - Richard Ten post edytował webber 14.10.2008, 09:36:56 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Kod $("#forum").load("forum_posts.html"+ '?nocache=' + Math.random()); aczkolwiek osobiscie nie mialem takiego problemu z IE |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 19 Dołączył: 30.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki działa, temat może iść do zamknięcia.
Poniżej gotowe rozwiązanie [jestem pewien, że komuś się przyda]: Poniższy kod wczytuje plik forum_posts.html do diva o id=forum odświeżając go co pół sekundy [dzięki nospor, ale gafa o_O]. Kod <script src="http://code.jquery.com/jquery-latest.js"></script> <script> function get_forum(){ $("#forum").load("forum_posts.html"+ '?nocache=' + Math.random()); }; $(document).ready(function(){ setInterval("get_forum()",500); }); </script> użycie: Kod <div id="forum></div> Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował webber 14.10.2008, 09:52:11 |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat odświeżając go co 5 sekund. setInterval("get_forum()",500); Nie, twoj kod odswieza go co pol sekundy Liczyc kazdy moze, jeden lepiej drugi gorzej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 29.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Problem jest taki że IE określa czy ma aktualizować strone czy nie na podstawie adresu URL przesłanego w zapytaniu. Jeśli podany URL jest znany to IE zakłada że nowa strona jest taka sama.
Jest pewne rozwiązanie: dodawaj do adresu url pewną liczbe aby kazdorazowo ten adres był inny. np. var the_url = "http://jakis_tam_adres.html?ignoruj = " + new Date().getTime() ; gdzie zmiennej ignoruj nie bierzesz pod uwage w swoim skrypcie. tym sposobem kazdy adres jest unikalny. Pozdro ps: IE to gówno |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 182 Pomógł: 0 Dołączył: 20.03.2007 Skąd: Kruklanki/Otwock Ostrzeżenie: (0%) ![]() ![]() |
Ten skrypt jest poprostu extra. Szukałem czegoś podobnego juz jakiś czas.
Mam jedynie pytanie - czy zamiast czytać z pliku "forum_posts.html" moze odczytywać z bazy sql ? |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
A to już zależy od pliku, który otwierasz. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
forum_posts.html w tym wypadku może byc obrabiany przez PHP i wtedy hulaj dusza. No chyba, że masz na myśli wykonywanie zapytań bezpośrednio z poziomu JS, to wtedy zapomnij. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 11:24 |