Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [advAJAX] HTML oraz JavaScript w responseText
Seth
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Troche spamuje tymi pytaniami ale nie moge znalezc odpowiedz na nastepujace pytanie:

Za pomoca advAJAX pobieram, uzywajac get'a strony, ktora zawiera XHTMLa oraz wstawki JavaScript (w tagach <script>). Pozniej, uzywajac innerHTML, wrzucam to do div'a.
Problem polega na tym, ze mimo ustawienia mimeType na text/html, pobrany fragment kodu nie zostaje "sparsowany" przez przeglade w taki spsob, aby JavaScript mogl sie wykonac.

Czy jest na to jakas metoda?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Alkagar
post
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.12.2005

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


hmmm jeżeli dobrze myśle to to bylo juz kilka razy pisane (w czym raz ja zadawalem to pytanie :-) )
  1. data = obj.responseText.split('\n');
  2. arraylen = data.length;
  3. var i = 0;
  4. while(i < arraylen)
  5. {
  6. if( data[i].indexOf("script") > -1)
  7. {
  8. i++;
  9. while(data[i].indexOf("/script") < 0)
  10. {
  11. eval(data[i]);
  12. i++;
  13. }
  14. }
  15. i++;
  16. }

W tym działa ładnie pod IE i Operą tylko ostrzegam od razu, że potem jest problem z <table> i wywala błąd jeżeli masz to w responseText.

Druga metoda:
  1. var data=obj.responseText;
  2. var ScriptFragment = '(?:<script.*?>)((\n|.)*?)(?:<\/script>)';
  3. var match = new RegExp(ScriptFragment, 'img');
  4. var response = data.replace(match, ''); //w response masz calosc bez skryptów JS
  5. var scripts = data.match(match); //w scripts masz same skrypty JS
  6. match = new RegExp(ScriptFragment, 'im');
  7. for (var i = 0; i < scripts.length; i++)
  8. eval(scripts[i].match(match)[1]);
  9. }

Lepsza od tej pierwszej ale mi pod Operą nie działa niestety ( nie wiem czemu bo innym działa)

Wypróbuj sobie i zobacz co lepsze :-)

Pozdrawiam,
Alk
Go to the top of the page
+Quote Post
Seth
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Dzieki wielkie.

Przeszukalem forum ale pod innym kontem slow kluczowych, wiec nie znalazlem Twoje posta :/
Ehh co to zmeczenie robi z czlowieka ;P
Go to the top of the page
+Quote Post
anopak
post
Post #4





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


@Seth może spróbuj przeżucić się na prototype? bardzo dobra, szybka i rozbudowana obsługa AJAX'a... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Seth
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Powiem tak:
od niedawna wzialem sie za AJAXa mimo, ze go uzywalem w nieco inny sposob duzo wczesniej (sam obiekt XMLHTTPRequest pod IE). Obecnie jestem zafascynowany mozliwosciami advAJAX oraz prostata jego wykorzystania - naprawde naleza sie gratulacje Anakinowi za kawal dobrej roboty.

Ale... patrzac na prototype nie wiem za co sie wziasc (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Dokumentacja jest troche uboga, a w obecnej chwili nie mam za bardzo czasu na zmiane advAJAXa na cos innego... terminy zakonczenia projektu, snia mi sie juz po nocach (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Jednak napewno przyjrze sie temu frameworkowi bo slyszalem mase pochlebnych opinii o nim (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
marcz
post
Post #6





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 12.07.2003
Skąd: Białystok

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


Czy nie ma jeszcze innej metody?
Ta pierwsza psuje mi niestety tabelki, a ta druga nie działa w ogóle (FF).
Go to the top of the page
+Quote Post
Nickesh
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.09.2005

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


Ostatnia odpowiedź w tym wątku była rok temu, ale może akurat się przyda jeszcze...
W prototype ta funkcja wygląda tak:

  1. <?php
  2. function evalScripts( text )
  3. {
  4.  
  5.  var scripts = [];
  6.  var script_sources = text.split(/<script.*?>/);
  7.  counter = 0;
  8.  for (var i=1; i < script_sources.length; i++)
  9. scripts[counter++] = script_sources[i].split(/</script>/)[0];
  10.  
  11.  for (var i=0; i < counter; i++)
  12.  eval( scripts[i] );
  13. }


... i chyba działa wszędzie.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.09.2025 - 22:44