Czy document.write może generować <script>?


(pain3hp) #1

Jeśli tak to proszę o przykład bo potrzebuję tą instrukcją wygenerować skrypt o konstrukcji


(adpawl) #2

można

document.write('

ewentualnie zamiast document.write budujesz/wstawiasz skrypt w oparciu o document.createElement


(M@ster) #3

Tylko że taka konstrukcja nie spowoduje wykonanie się JS'a w ten sposób wstawionego. Nie jestem tego na 100% pewny wprawdzie, ale nie bez powodu np: jQuery ma specjalne funkcje do uruchamiania kodu JS wywołanego AJAXem, więc coś jest na rzeczy.


(adpawl) #4

M@ster, spowoduje - a przynajmniej podczas testu jaki zrobiłem na localu spowodowało.

Co do niezawodności takiego rozwiązania nie potrafię nic powiedzieć, bo sam takich konstrukcji nigdy nie stosowałem.

...ale też spotkałem się z czymś takim w kilku skryptach z sieci, więc chyba musi działać w większości przypadków.

Ja sam nie jestem zwolennikiem takiego rozwiązania i już wolał bym dołączyć wspomnianym document.createElement, czy przy użyciu gotowej metody jquery. No ale pytanie było "czy może", a nie "jak inaczej" :slight_smile:


(pain3hp) #5

adpawl to tą składnię musi wygenerować plik php, czy mógłbyś to jeszcze przepuścic przez echo ?


(Copycona) #6
echo 'document.write(\'; [/code]

? Co tam kombinujesz. // edit: Eh, przekombinowałem i na szybko, bez sprawdzenia - źle. Widzę post niżej poprawione. Sorry.


(adpawl) #7
echo 'document.write(\'

(pain3hp) #8

Ale to nie spełnia tego co chciałem, ja nie chce tworzyć skryptowego linka do innego skryptu tylko chce wygenerować już skrypt który bedzie w dokumencie HTML i bedzie działał, konkretnie funkcja.


(adpawl) #9

to może zdecyduj się co właściwwie chcesz zrobić i czy przez document.wirte, czy przez php, czy przez jedno i drugie.

Przecież src nikt nie każe ci używać, równie dobrze treść skryptu możesz wstawić nie w zewnętrznym pliku a między tagami script

...tylko musisz wyeskejpować wewnętrzne apostrofy (lub zastąpić je jeśli to możliwe cudzysłowiem) czy w razie potrzeby slashe

np w php

<?php

echo '';

?>

a z poziomu js

przynajmniej jeśli o to ci chodziło.


(Damgora) #10

chcesz skryptem js wygenerować skrypt js? Można wiedzieć po co? Nie możesz tej funkcji umieścić w pierwszym skrypcie? Jak masz treść kodu js do wykonania w stringu to użyj eval()


(pain3hp) #11

bo ja już mam zrobiony pliczek PHP który generuje instrukcje document.write ale tam jest czysty HTML gdy mu dodaję żeby wygenerował funkcję .js to wtedy nie działa, a wklejałem i próbowałem jak pokazywaliście