Skocz do zawartości

[js] coś podobnego do include w php


Stwor

Rekomendowane odpowiedzi

mam pytanie czy jest coś w javascript co by zastąpiło include

powiedzmy że chce, na innej stronie wyświetlić moja stronę z innego serwera ale za pomocą js

Z góry dzieki za odpowiedź

niezaleznosc-finansowa.pl - czasami coś napiszę

Hippos - Katalog stron PREMIUM

Odnośnik do komentarza
Udostępnij na innych stronach

<script language="JavaScript" type="text/javascript">
<!--
function include ( site )
{
document.write( '<iframe src="'+site+'" marginwidth="0" marginheight="0" scrolling="" frameborder="1" width="100" height="100"></iframe>');
}
//-->
</script>

Jak w języku nie ma danej funkcji to sie ją dopisuje :)

stopka usunieta z wpoodu wirusa na stronie docelowej

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...

Jest parę opcji, ja najczęściej korzystam z takich:

Includowanie. Po prostu.

<? include("https://domena.pl/data/dane.txt"); ?>

Na czymś zbliżonym do w/w bazuje pół mojej sieci - by nieco zabezpieczyć się przed ewentualnością nieskopiowania tekstu, po prostu się buforuje, czyli piszesz sobie function my_include(string s).

Javascript, document.write.

<script>document.write('tekst')</script>

Javascript, wczytanie skryptu:

<script src="plik.js"></script>

a w plik.js:

document.write('tekst');

W obu wypadkach z JS, istnieje jeden nieprzyjemny efekt uboczny. Cudzysłowy. Dlatego dla oznaczenia tekstu tekst lepiej używać apostrofów, bo wtedy cudzysłów (np. przy anchorach) nie zakończy łańcucha. I odwrotnie, można używać cudzysłowów, dzięki czemu nie zakończą łańcucha apostrofy. Jeśli już musisz powtórzyć znak w/w, robisz jak w PHP: \" lub \' .

Można jeszcze użyć przy parsowaniu XHTML/SHTML kodu wykonywaniego po stronie serwera (SSI, Server Side Includes):

<!--#include virtual="/footer.html" -->

Więcej o SSI na tej stronie. Nie testowałem czy działa "na odległość", ale sprawdzenie tego zajmie Ci moment.

Iframe jest o tyle do ni***go rozwiązaniem, że określasz wielkość strony "wewnątrz", może pojawić się dodatkowy scrollbar, lub jeśli go się wyłączy a strona jest większa niż zadeklarowałeś w width i height, to będzie fatalnie wyglądać i działać z kółkami na myszce. Po prostu wychodzą w takich momentach wszystkie wady iframe.

Jak mi jeszcze coś przyjdzie to dam znać.

Pozdrawiam, J.

BTW, jeśli tak strasznie Ci zależy na niewyświetlaniu czegoś robotowi, to scloakuj to, o ile to będzie w granicach dobrego smaku i nie zarzuci Ci nikt spamu. Jeśli chcesz zrobić swój system mini-dystrybucji contentu, to zastosuj 1. rozwiązanie (includowanie+buforowanie), zawsze to więcej treści (byle nie była zbyt nachalnie duplicate).

Pozdrawiam, J.

Odnośnik do komentarza
Udostępnij na innych stronach

mam pytanie czy jest coś w javascript co by zastąpiło include

powiedzmy że chce, na innej stronie wyświetlić moja stronę z innego serwera ale za pomocą js

Z góry dzieki za odpowiedź

W JavaScript to się takie coś najprościej można zrobić tak:

<script>
function include(uri) {
 var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
 xmlHttp.open("GET", uri, false);
 xmlHttp.send();
 //xmlHttp.send(xmlDoc);
 document.write(xmlHttp.responseText);
}
</script>
...
<div><script>include('mojastrona.html')</script></div>

Jak potrzebujesz, żeby strona includowała się asynchronicznie(bo teraz przeglądarka będzie czekać na wykonanie funkcji include) to pisz.

Odnośnik do komentarza
Udostępnij na innych stronach

Jak potrzebujesz, żeby strona includowała się asynchronicznie(bo teraz przeglądarka będzie czekać na wykonanie funkcji include) to pisz.

Napisz, napisz...

Technika AJAX jest teraz na topie więc z pewnością wielu userów to zaciekawi :D

Warto jeszcze zaznaczyć, że Twój kod zadziała tylko w przeglądarce IE [obsługującej ActiveX

:zeby:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Asynchronicznie to może być np. tak:

<script>
function include(uri, target) {
 var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
 xmlHttp.open("GET", uri, false);
 xmlHttp.send();
 //xmlHttp.send(xmlDoc);
 document.getElementById(target).innerHTML = xmlHttp.responseText;
}
</script>
...
<div id="mojastrona"></div>
...
<script>setTimeout("include('mojastrona.html', 'mojastrona');", 10)</script>
</body>

Jeśli timeout będzie wywolany zanim przegladarka wyrenederuje strone do konca to cos sie moze wykrzaczyć(IE zwłaszcza), dlatego najlepiej to umieszczać na końcu kodu.

A z tym, żeby było crossbrowser to się trzeba troche pomęczyć zwłaszcza jeśli chodzi o Operę. Jak dostosować to do FF można przeczytać np. tutaj.

Odnośnik do komentarza
Udostępnij na innych stronach

Sprawdź Kolego swoje kody ... nie działają z powodu : brak definicji 'xmlDoc';

Aby "odpaliły" wymagane jest usunięcie z kodu funkcji send(xmlDoc);

:)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

To była wersja Alpha ;)

Uważam, że powinniśmy testować własne kody dodawane w odpowiedzi pod kontem ich funkcjonalności.

Zaoszczędzi to userowi nerwów który testując nagle spotyka się z nieprzewidzianym problemem -> Kod z nie działa. :soczek:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności