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

Posty w temacie


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: 28.09.2025 - 18:58