Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [advAJAX] HTML oraz JavaScript w responseText
Seth
post 27.06.2006, 13:12:16
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
Alkagar
post 28.06.2006, 11:13:15
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


--------------------
I amar prestar aen
Go to the top of the page
+Quote Post
Seth
post 28.06.2006, 19:05:53
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 28.06.2006, 19:56:53
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... smile.gif


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
Seth
post 28.06.2006, 22:13:12
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 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 winksmiley.jpg

Jednak napewno przyjrze sie temu frameworkowi bo slyszalem mase pochlebnych opinii o nim smile.gif
Go to the top of the page
+Quote Post
marcz
post 18.07.2006, 12:02:40
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).


--------------------
Pozdrawiam,
MarcZ
Go to the top of the page
+Quote Post
Nickesh
post 17.09.2007, 21:37:05
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.


--------------------
warsztat: winXP | apache 1.3.27 | MySQL 4.0.15 | PHP 4.3.3
warsztat 2: Debian | apache 2.0.55 | MySQL 4.1.7 | PHP 5.0.5
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: 25.04.2024 - 11:53