javascript feladvany - "include html"

Hali!

a webprogramozastol mindig idegenkedtem, de most elszantam magam es azt is elkezdtem tanulni, vagy valami olyasmi. Elso probalkozasom rogton kifogott rajtam:
Javascriptben megirni a kovetkezot: kolonbozo elore definialt urlek honlapok tartalmabol kivagni egy adott reszt, pl egy beazonosithato div teljes tartalmat(
tol sajat

ig) beszurni a dokumentumba, azaz a megjelenitendo oldalra.
egy nem valos pelda: a hup fooldalanak legfrisebb forumtemak szekciojat egy az egyben megjeleniteni egy oldalon.
iframe el probalkoztam, mert az kepes linkeket megjeleniteni, nem ment.
Otlete van valakinek? Jelen pillanatban ketlem hogy ezt meg lehet oldani javascriptben, hacsak nem esetleg ajax is kell hozza valamifelekepp?
Lehet csak szerveroldali programozassal oldhato meg?

koszi
Zsolt

Hozzászólások

XMLHttpRequest? Csak ötlet, nem próbáltam, és js-ben parsolni a html-t lehet h vicces. Persze ha nem kell számítani nagy vagy összevissza html-re, akkor nem lehetetlen.

Az ajaxot nem kell túlmiszifikálni, halom példaprogram van a neten. Egy ilyen ajaxos hívás 10 sor (mert sok a komment :)) de kivágni az adott részt... hát... az a neccesebb, szerintem.

Itt egy .txt-t tol be egy frame-be: http://www.w3schools.com/XML/tryit.asp?filename=tryxml_httprequest_js1

Ott a responsetext-ben szerintem visszakapod a html lapot, ha html-t kérsz le. Viszont hogy abból hogyan kotrod ki ami neked kell...

Hát ahhoz nem kell szerver oldali dolog, hogy regexp-ekkel ki tudjon szedni egy darabot a szövegből. Szerintem ez egyértelműen arról szól, hogy :
1. kell egy ajax-os kérés, ami letölti az adott honlapot
2. getElementById vagy valami hassonlóval, ha kell ír egy getElementsByClass-t (neten van példa rá) kiszedi a megfelelő div-et, esetleg ha több a találat regexp-el vagy indexOf-al megnézi melyik kell neki. Szerintem nem nagy ördőngősség e DOM fát js-el parsolni elvégre majdhogynem arra találták ki.
3. a linkeket hivatkozásokat regexp-el kicseréli hogy a megfelelő helyre mutassanak
4. innerHTML-el betolja a tartalmat a saját html elemébe.
5. Mosolyogva örül neki, és keres valami más kihívást.

.:LISA PHP Framework:.

"de kivágni az adott részt... hát... az a neccesebb, szerintem" Amennyiben szabványos html, js-el gyönyörűen be lehet járni, nincs ott gond. Az ilyen megoldásokkal az a baj álltalában, ha időközben megváltozik az oldal, mert akkor lehet upgradelni a js kódot is :(

.:LISA PHP Framework:.

talán ilyesmi: http://webakademia.hu/2007/12/javascript-include/

- - - - -
Tagadom a Microsoft Windowst. Szerintem ilyen operációs rendszer nincs és nem is volt soha. A létezése nem igaz, meg sem történt. Egyszerűen nem hiszem el, hogy van. Nem hiszek a létezésében és abban sem, hogy ilyen.

Szvsz ne JS-vel kezd. Inkább először csak sima html-t tanuld. A frame nem egy rossz ötlet. Ha pl RSS formában is elérhető, akkor érdemes PHP-val legyártani a html-t, de ez messzire is vezethet. Amennyiben most ezt minden előtanulmány nélkül szeretnéd megoldani, akkor mindenképpen a frame útján indulj el, talán ez a legegyszerűbb, de meglehet a legcsúnyább is.

Termeszetesen a HTMLt mar attekintettem. Igazabol a w3schools.com oldal tutorialjait csinalom sorba. most a HTML DOM nal tartok mar.
A problema igazabol ez tobbek kozt:

Hello World!

x=document.getElementById("intro");
document.write(x.innerHTML);

Ez siman mukodik ahogy azt gondolnam.
A kovetkezo kod viszont nem, masodszorra csak a Hello szoveg jelenik meg.

Hello
World
!

x=document.getElementById("intro");
document.write(x.innerHTML);

Nyilvan azert mert a div egy uj node a DOM faban... nem teljesen vilagos ez az innerHTML meg...

zsolt

Ebbol a kommentbol csak a lenyeg maradt ki!
elso kod:
<p id="intro">Hello <b>World</b>!</p>
<script type="text/javascript">
x=document.getElementById("intro");
document.write(x.firstChild.nodeValue);
</script>

masodik:
<p id="intro">Hello <div>World</div>!</p>
<script type="text/javascript">
x=document.getElementById("intro");
document.write(x.firstChild.nodeValue);
</script>

zsolt

ha js-ezni akarsz, akkor fogj egy firefoxot, tedd fel rá a firebug kiegészítőt, és akkor könnyen tudod próbálgatni a kódodat és látod azt is, hogy mit csinál.

Azt ugye tudod, hogy js-ből csak olyan iframe tartalmához férsz hozzá, ami ugyanazon a(z al)domainen van, mint a te oldalad?

Szal a saját oldaladról hiába töltöd a hup.hu oldalát egy iframebe, ahhoz nem fogsz hozzáférni biztonsági okokból.

Ajax is csak saját (al)domainen lévő címet hajlandó betölteni.

Mielott nagyon belelkesednel, keress ra a "same origin policy" kifejezesre.

--
Vorbis megváltoztatta az embereket. Néha halott emberekké változtatta őket. De mindig megváltoztatta őket. Ez volt az ő diadala. - Pratchett

Ok, az en esetemben talan nem jelent biztonsagi kerdest, hiszen csak a masik oldal mforrasahoz akarok hozzaferni html formatumban. Ez az ami nem megy. akkor pl regexpekkel is ki tudnam nyerni a nekem szukseges reszt.
a policy azt mondja hogy bizonyos DOM metodusokhoz es tuljdonsagokhoz nem enged hozzaferni. nem neztem meg igaz hogy mik ezek konkretan. de talan a forras nem tarozik ide. vagy megis? :)
zsolt

Képzeld el a következőt:
Csinál a jófejsrác egy iframet, amibe behívja a gmailt.
Sok embernél a maradjon bejelentkezve opció be van kapcsolva (nem kell jelszót megadni).
"Csak" olvasni fogja az oldal (ami nem a gmail.com) a leveleidet.

Szal ezt ezért nem lehet.

Ezt úgy szokták megoldani (ha jól tudom), hogy
1.) hup.hu kiad egy js filet, amit a kódodba ágyazhatsz, és meghívhatod a metódusokat, stb...
2.) Csinálsz vmi php-t/szerveroldali miskulanciát, ami lekéri az oldalt, és megrágja, majd kiköpi vmilyen formában...

Az <iframe src="http://gmail.com"></iframe> kod szepen mukodne, ha a gmail nem akadalyozna meg a mukodeset, olyan mintha erzekelne, hogy iframebe hivod meg...
barmilyen kulso oldalt be lehet tolteni ugy veszem eszre, a bongeszo ismeri a forrast, de ugy tunik a DOM nem engedi meg - egyebkent sem - egy html lap forraskodjat valtozoba tenni.

Rekurzivan, nagy nehezsegek aran lehetne, ha vegigmesz a fan. ezt senki nem fogja csinalni...

Ez nem egy valos feladat, csupan eppen a html domot, js t tanulmanyozom es felmerult bennem ez a kerdes. Ugy tunik JS bol ezt meg senki nem akrta megoldani vagy rajott hogy ha lehetseges is, nem erdemes.
Most en is ezen az allasponton vagyok. Ebbol azt a kovetkeztetest vonom le, hogy bar sokmindenre jo, nem eleg eros es nem engedheti el az ember a fantaziajat. :)
Pedig milyen jo lenne, nem kene szervert telepiteni... :)

zsolt

Hi, ha mar mindenkepp javascript, nyugodtan kezdj valami libbel. Pl.: jqueryvel, php-ben ez nagyjabol ennyi:


$("#frame").load("load.php?page=http://hup.hu #block-block-16")
/*
 * Ahol:
 * 1) van az oldaladon egy < div id="frame" > < /div > taged, amelybe
 *    szeretned tolteni az oldalt
 * 2) a load.php egy szerveroldali szkript, amely elvegzi a HUP betolteset
 * 3) a #block-block-16 a HUP-on levo fooldali legfrissebb forumtemak doboz.
 */

Persze mivel az XHR nem megy kulso eroforrasra, sajat magadnak kell szerver oldali tamogatassal megoldanod maganak a HUP betolteset. Ez pl.: php-vel curl-lel kitunoen mukodik. A net tele van peldakkal rohadasig.

Sok sikert!