Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][HTML] Tworzenie elementu w określonym miejscu
Forum PHP.pl > Forum > Przedszkole
desavil
Witam.

Poniższy kod będzie służył do wstawiania przez użytkowników na ich stronach (kod będzie mógł być wstawiony nawet kilka razy na tej samej stronie).
  1. <script type="text/javascript">
  2. var iframe_zmienna = 'wartosc';
  3.  
  4. (function() {
  5. var pr = document.createElement('script');
  6. pr.type = 'text/javascript';
  7. pr.async = true;
  8. pr.src = 'iframe.js';
  9. (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(pr);
  10. })();


W pliku iframe.js mam zamiar tworzyć element iframe (obecnie robię to tak):
  1. window.onload = function() {
  2. iframe = document.createElement('iframe');
  3. document.body.appendChild(iframe);
  4. }


Problem polega na tym, że <iframe></iframe> zostaje dodane na końcu strony (zaraz przed </body>). Czy istnieje jakaś możliwość rozwiązania tego w taki sposób, że tworzony element zostaje dodany w miejscu na stronie, gdzie jest wstawiany powyższy kod w <script></scirpt>?

Dziękuję za pomoc.
nospor
document.write()
desavil
Cytat(nospor @ 4.05.2016, 12:37:29 ) *
document.write()


Tak, tylko jeżeli w pliku: iframe.js wpiszę to:
  1. window.onload = function() {
  2. document.write('Tekst');
  3. }

To zawartość całej strony (gdzie znajduje się <script></script>) zostaje usunięta i jest wstawiony tylko napis "Tekst".
nospor
No ale zdecyduj sie, albo robisz cos na onload, albo od razu chcesz wpisywac.
desavil
Cytat(nospor @ 4.05.2016, 12:46:12 ) *
No ale zdecyduj sie, albo robisz cos na onload, albo od razu chcesz wpisywac.


Jak wpiszę samo: document.write() w pliku iframe.js to na stronie nic się nie wyświetla (tzn. zawartość tego document.write).
nospor
Moze nie do konca zrozumiales jak to dziala.

Sprawdz ten przyklad:
http://www.w3schools.com/jsref/tryit.asp?f...ref_doc_writeln

desavil
Cytat(nospor @ 4.05.2016, 12:52:18 ) *
Moze nie do konca zrozumiales jak to dziala.

Sprawdz ten przyklad:
http://www.w3schools.com/jsref/tryit.asp?f...ref_doc_writeln

Wiem jak działa document.write(), jednak nie wiem w jaki sposób zrobić to o czym jest ten wątek.
Pewnie dążysz do tego, abym zrobił (i żeby to użytkownicy wrzucali na swoją stronę):
  1. <script type="text/javascript">
  2. document.write('<iframe></iframe>');

Takie rozwiązanie mnie nie interesuje. Plik iframe.js będzie znacznie rozbudowany (na forum wstawiłem tylko mały przykład).
desavil
Cytat(trueblue @ 4.05.2016, 13:08:51 ) *

To jest jakieś rozwiązanie, bo przed <script></script> mógłbym wstawić jakiegoś diva z jakimś id (<div id="iframe-zawartosc"></div>) i do niego byłaby wstawiana ramka, jednakże...
Jak wspomniałem w pierwszym poście - użytkownik ten sam kod będzie mógł umieścić na swojej stronie nawet kilka razy. A co za tym idzie, jak będzie div miał taką samą klasę czy id, to zawartość skryptu zostanie przypisana do każdego diva o takiej samej nazwie/klasie.

W moim pierwszym poście jest coś takiego w kodzie:
  1. var iframe_zmienna = 'wartosc';

Tutaj będą różne zmienne i w zależności od tego co w nich będzie, dana rzecz z iframe.js będzie się wyświetlała, więc w każdym divie może być inna zawartość.

Dodam, że jak w pliku iframe.js wstawię: document.write('Jakiś tekst'); to w konsoli pojawia się następująca informacja (oczywiście tekst się nie wyświetla):
Cytat
Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.
trueblue
http://stackoverflow.com/a/10312824/5889778
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.