Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> ajax i wczytywanie skryptów JS, a dokładniej plików zawierających skrypt
SHiP
post 15.12.2005, 19:28:39
Post #1





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


Mam lekki problem. Napisałem sobie silnik który wczytuje pliki w określonej kolejności i ładuje do strony... niestety gdy wczytany text zawiera kod JavaScript i wrzuce to do mojego diva to nie jest on wykonywany ;] co zrobić aby JavaScript nie wiem... przeszukał text odnalażł skrypt i go wykonał ;] Czy może umiescić go w oddzielnym pliku *.js i loadowac za kazdym razem wraz ... sam już nie wiem w każdym bądz razie skrypty typu...

Kod
<script language="javascript">
<!--
var text = '<body onload="alert(\'onload\')">Skrypt: <sc'+'ript language="javascript"><!--alert("OK dziala");//--></sc'+'ript></body>';

function aktywuj()
{
document.getElementById('main').innerHTML=text;
}
//-->
</script>
<a href="javascript:aktywuj()">Aktywuj</a>
<div id="main"></div>

...nie działają dry.gif


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
mike
post 15.12.2005, 19:33:35
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


1. Może funkcja eval() Ci sie przyda?
2. Jeśli za pomocą AJAXa ladujesz dynamicznie stroną, która zawira JavaScript to nie masz szans go wykonać, bo w rzeczywistości kod ten nie ma styczności z przeglądarką, więc nie ma kto go wykonać.
Go to the top of the page
+Quote Post
SHiP
post 15.12.2005, 21:47:41
Post #3





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


OK dzięki ;] tak myślałem że jednak nie bedzie innego wyjścia jak przerobić skrypt...

Ten post edytował SHiP 15.12.2005, 22:04:19


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
anopak
post 27.12.2005, 16:00:08
Post #4





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

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


Cytat(mike_mech @ 2005-12-15 18:33:35)
1. Może funkcja eval() Ci sie przyda?
2. Jeśli za pomocą AJAXa ladujesz dynamicznie stroną, która zawira JavaScript to nie masz szans go wykonać, bo w rzeczywistości kod ten nie ma styczności z przeglądarką, więc nie ma kto go wykonać.

ad 1. faktycznie eval, a do tego RegExp
ad 2. co do tego to się nie zgodzę, bardzo często wykorzystuję to, że dopiero po załadowaniu AJAX'em wykonuję jakąś funkcję, którą właśnie przesłałem AJAX'em... Jedyny problem to jest to, że nie da się dość prosto dynamicznie załadować script z użyciem src="...", w takim wypadku trzeba to załadować AJAX'em i użyć eval....


--------------------
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
xamil
post 1.08.2006, 13:10:42
Post #5





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Witam, podepne się.

Stworzyłem sobie skrypt który wczytuje mi odpowiednie js i wykonuje je przy pomocy funkcji eval. Niestety mam problem... W przesyłanym kodzie js przesyłam również całe funkcje i kiedy chce z niej skorzystać na stronie dostaje informacje, że taka funkcja nie istnieje:(

Okazało się, że po wykonaniu eval() przesłane funkcje są dostępne tylko w obrębie funkcji w której wykonałem eval. Niestety nie są one dostępne globalnie. W sumie jest to jak najbardziej logiczne;) no ale nie taki efekt chcę uzyskać;)

Więc teraz pytanie. Co zrobić aby po wykonaniu eval na kodzie zawierającym funkcje te funkcje były dostępne globalnie?
Go to the top of the page
+Quote Post
SHiP
post 1.08.2006, 14:59:34
Post #6





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


Spróbuj deklarowac fukncje jak zmienne tj.

Kod
nazwa_funkcji() = function(parametry)
{
    // reszta
}


Ten post edytował SHiP 1.08.2006, 15:00:16


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
xamil
post 1.08.2006, 15:21:08
Post #7





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Z lekką modyikacją:
Kod
nazwa_funkcji = function(parametry)
{
    // reszta
}
I chyba śmiga:] Dziękuje pięknie:] Czy takie rozwiązanie może gdzieś albo jakiejś sytuacji nie działać? Moze to nieść ze sobą jakieś problemy? Czy po prostu wszystko winno śmigać jakbym zwyczajnie deklarował funkcje? winksmiley.jpg

Ten post edytował xamil 1.08.2006, 15:21:49
Go to the top of the page
+Quote Post
gekon
post 1.08.2006, 18:31:21
Post #8





Grupa: Zarejestrowani
Postów: 614
Pomógł: 7
Dołączył: 10.11.2003
Skąd: Rzeszów/Kraków

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


A ja dorzucę jeszcze to: http://24ways.org/advent/have-your-dom-and-script-it-too


--------------------
Pokaż kod = Pokaż CAŁY kod, najlepiej działający na jakimś serwerze.
Fanatycy | glazar.info | semantyka | HTML i XHTML FAQ
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: 28.06.2025 - 02:18