Sziasztok!
Hogyan tudnék egy "button" elemet iframe-ből a szülő, frame-ben? Konkrétan az iframe-be betöltött dokumentumból akarok kiadni egy parancsot, amit a szülő frame-ben lévő gombot tiltja le. a ".diabled=true" megy. Az a bajom, hogy olyan példákat találtam csak, amikben megnevezik a frameket ("top.frames['fameneve'].getElementById('gomb').disabled=true;") ..... de a "nagy-framenak" mi a neve?
- 2440 megtekintés
Hozzászólások
up!
- A hozzászóláshoz be kell jelentkezni
window.parent.document.getElementById('gomb').disabled=true;
Nem csak megnyitott ablakokra, hanem frameset-re, iframe-re is működik.
- A hozzászóláshoz be kell jelentkezni
De csak ha azonos domainrol van a ket frame, ezt gyorsan tegyuk hozza.
Tehat ha az iframe a facebook.com (mondjuk baratlista)
A kulso frame meg az index.hu
Akkor nem megy.
Csak akkor, ha mindketto facebook.com
- A hozzászóláshoz be kell jelentkezni
Köszi mindenkinek :)
Annyiban módosult a koncepció, hogy most egy megnyitott window-ból kellene egy másik megnyitott window-ba betöltött oldalon lévő elemet elérni.
- A hozzászóláshoz be kell jelentkezni
Ez egyre rosszabb. Mi a fenet csinaltok???
Amugy gyerekwindow = window.open(url, "gyerekwindow");
gyerekwindow.document.getElementById("anyu");
ill. a gyerekwindow-ban tovabbra is window.parent...
es ez tovabbra is csak azonos domain eseten.
- A hozzászóláshoz be kell jelentkezni
Van egy window, melyben van egy javascipt-es WYSIWYG szövegszerkesztő, melynek alapeleme egy textarea.
Ebből a window-ból egy button segítségével nyílik újabb window, mely egy ajax-os fájlmanagert nyit meg.
< input type=\"button\" value=\"Képek beszúrása\" onClick=\"window.open('ajaxfilemanager/ajaxfilemanager.php','mywindow_kep','width=900,height=600,top=100,screenX=0,screenY=100');\">
A fájlmanager meg tudja nyitni a képeket lightboxba. Az a cél, hogy a lightbox-on belül egy linkre kattintva beszúrodjon a képnek az url-jét tartalmazó sztring az őt megnyitó (WYSIWYG-es szövegszerkesztős) ablakban található textarea-ba.
function beszuras()
{
global_url;
window.parent.getElementById("szoveg").value += "<a href='"+global_url+"' target='_blank'><img src='"+global_url+"' width='50 px'></a>";
}
Szerintem nem jól értelmeztem az iránymutatást, mert továbbra sem akarja a sztringet beilleszteni :(
- A hozzászóláshoz be kell jelentkezni
Ez nagyon beluska-kod.
Melyik WYSIWYG editor?
Szerintem a textarea tipusnak nem value-ja van, hanem innerHTML-je, es a getElementById az nem egy window fuggveny, hanem document fuggveny, tehat:
window.parent.document.getElementById("szoveg").innerHTML += "< a href='"+global_url+"' target='_blank'>< img src='"+global_url....>
Mondjuk lehet value-val is mukodik, de ettol meg nem tul modern a kod...
Van am javascript debugger, firefox alatt firebug, chrome alatt meg csak be kell kapcsolni - sot, opera-ban is van valami. Lehet szepen breakpointot allitani es dob syntax errort a megfelelo sorban...
- A hozzászóláshoz be kell jelentkezni
nem is volt rá sok időm összedobni ezt a tákolmányt :D
Wizz WYSIWYG editornak egy 2006-os verziója. Csak be kell linkelni a .js fájlt és egy függvénynek meg kell adni paraméterbe a textarea azonosítóját.
Köszi, ki fogom próbálni :) Nemrég kezdtem csak bele a kliens-oldali webprogramozásba és ez tőlem nagyon távol áll. amit lehetett, megoldottam PHP-val és igazából eddig csak apróságokhoz használtam JS-t, nem is merültem bele igazán sosem, csak mostanában, amikor már AJAX-ot is kellett használnom.
Szomtam is használni a javascript debugger-t, de ablakokra/ablakok között sajnos nem működik :(
- A hozzászóláshoz be kell jelentkezni
Jo,akkor ismerkedj::
http://www.youtube.com/watch?v=v2ifWcnQs6M&feature=youtube_gdata_player
(Ez alt. kotelezo mindenkinek, aki JS-sel foglalkozik tobb cegnel, popcorn-sessionnek hivjuk)
Ott vannak mellette a folytatasai is (An Inconvenient API - The Theory of DOM, Advanced JavaScript, aztan a Crockford on JavaScript), de a hozzaallast allitjuk be vele inkabb.
Kell majd neked egy browser lib is, mert az IE meg a firefox csak papiron kompatibilis; ez az uj divat szerint a jQuery, de a legtobb jQuery demo-kod valojaban nem megkulonboztetheto az ocsmany hekktol, igy valami tisztabbat (pl. YUI) kene nezned.
A 2006-os verzio pedig felvilagosodas elotti, valoszinuleg sok baja van (2006-ban ez a bizonyos Crockford inditotta el a modern javascript felfogast, amely egy tisztabb kodstilust eredmenyezett, ennek eredmenye a jQuery is)
Erdemes megtanulni, mert egy csomo dolog fut ezzel, meg sokszor egyszerubb es tisztabb megirni egy intelligens kliensprogramot ami a bongeszoben fut, semmint trukkozni a browserrel.
- A hozzászóláshoz be kell jelentkezni
megnéztem, a firefox hibakonzolja működik ablakora is.
"Hiba: window.parent.document.getElementById("szoveg") is null
Forrásfájl: ajaxfilemanager/jscripts/thickbox.js
Sor: 328"
--> window.parent.document.getElementById("szoveg").value += "< a href='"+global_url+"' target='_blank'>< img src='"+global_url+"' width='50 px'>< /a>";
Lehet, hogy a szülő ablakot nem ismeri fel?
- A hozzászóláshoz be kell jelentkezni
Lebreakpointolod, fogod a konzolt, beirod, hogy window.parent. vagy adsz ra egy watch-ot. A firebug asszem nem merge-eli az ososztalyokat, szoval ha valamilyen fuggvenynevet nem latsz a listaban, keress a prototype, vagy __proto__ tulajdonsagokra.
Ha null-t kaptal vissza a getElementById-re, az azt jelenti, hogy nincs szoveg id-ju elem a parent documentben. Meg kell nezni, hogy sajat magat latja-e parent window-nak, ill. hogy a parent window-ban van-e szoveg nevu id futasidoben (HTML ful a firebugban)
- A hozzászóláshoz be kell jelentkezni
köszi, mindjárt utánanézek :)
- A hozzászóláshoz be kell jelentkezni
találtam a Google Könyvekben egy Javascript Bible c. könyvet.
Találtam benne egy példakódot is egy opener nevű függvényről. Meg is írtam belőle a saját kis egyszerű kódomat.
< html>
< head>
< script type="text/javascript">
function beilleszt()
{
document.getElementById("szoveg").innerHTML += "valami";
}
function ablak_creat()
{
var ablak;
ablak = window.open('2.htm','ablak1','width=900,height=600,top=100,screenX=0,screenY=100');
ablak.focus();
}
< /script>
< /head>
< body>
< textarea id="szoveg"></textarea>
< input type="button" value="Izé" onClick="ablak_creat()">
< input type="button" value="Beillesztés" onClick="beilleszt()">
< /body>
< /html>
és a betöltött oldal kódját is:
< html>
< head>
< script type="text/javascript">
function beszuras()
{
self.opener.document.getElementById("szoveg").innerHTML += "valami";
}
< /script>
< /head>
< body>
<input type="button" value="Izé2" onClick="beszuras()">
< /body>
< /html>
az a gond, hogy ez Mozillában működik, de Chrome-ban már nem működik. Van valami univerzálisabb megoldás? a jQuery-ben van ilyen, hogy szülőablak-elérés? :)
szerk.: a windows-os Safariban is működik.
- A hozzászóláshoz be kell jelentkezni
Akkor hasznald ezt... https://developer.mozilla.org/en/DOM/window.opener
(self helyett window)
A jQuery nem csinal csodat, a jQuery annyit csinal, hogy nem kell menkuhosszu query-ket kezzel irni (document.getElementById('tablazat').getElementsByTagname('td')[0].firstChild es hasonlok), meg elfedi a browser-inkompatibilitasokat (pl. az addEventListener (standard) es attachEvent (IE) kozti "apro" kulonbsegeket), de csodat nem tesz, es foleg nem lesz tole rendezettebb a kodod.
Alapvetoen a problemat ugy szokas kikerulni - es ez a felhasznalonak is jobb altalaban - hogy modalis virtualis ablakokat hasznalunk. A modalis virtualis ablak egy abszolut-pozicionalt div, aminek magas a z-index CSS eleme, es igy eltakarja a tobbi elemet. Attol modalis, hogy a tobbihez nem lehet hozzaferni, es attol virtualis, hogy nem igazi ablak. Vagy eleve letre van hozva, csak display:hide a css-e, vagy keresre hozzuk letre. A bezarasa hide-dal vagy DOM-bol kivetellel tortenik.
Tipikus korai (Prototype) megvalositasa ez: http://prototype-window.xilinus.com/
YUI-s megoldas: http://925html.com/files/overlay-extras/ (kod: http://yuilibrary.com/gallery/show/overlay-extras )
DOJO-s megoldas: http://dojotoolkit.org/reference-guide/dijit/Dialog.html
jQuery UI: http://jqueryui.com/demos/dialog/#modal
ExtJS 4 megoldas: http://dev.sencha.com/deploy/ext-4.0.7-gpl/examples/message-box/msg-box…
Szoval igy. Es akkor nincs parent window para.
- A hozzászóláshoz be kell jelentkezni
köszi, azóta már valahogy Chrome-ban is életre kelt a kicsike :) Most azzal szívok, hogy ha a Wyzz-es textarea-ba billesztem a sztringet a a Wyzz insertHTML függvényével, akkor csak Mozilla alatt képes befrissíteni annak a tartalmát.... tényleg kész agyrém a böngészők közötti inkompatibilitás.. komolyan mondom, száműzni kellene a böngészők készítőit egy lakatlan szigetre....
- A hozzászóláshoz be kell jelentkezni
Mondjuk ha nem egy 2006-os libet hasznalnal 2011-ben, az lehet segitene...
- A hozzászóláshoz be kell jelentkezni
benéztem azt :D az openwebware.com-hoz volt írva a 2006 :D 2009 volt a program neve mellé írva. kissé fáradt voltam múltkor és most sem vagyok éppen kipihent :D ja, most már mindhárom böngészőben megy rendesen az editor tartalmának a frissítése :D hehe, tényleg a tököm kivan néha a böngészőkkel :D
- A hozzászóláshoz be kell jelentkezni
Szerintem a 2009 is regen volt mar. Ha nekiszaladsz, es lecsereled az editort egy modernebbre, tamogatottabbra, akkor lehet, hogy tobb idot tudsz a csaladoddal tolteni. Peldaul egy CKEditor megfelelo lehet, integralt fajlkezelessel bir, amit nem neked kell megirni, keszen, ajandekba kapod.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
up
- A hozzászóláshoz be kell jelentkezni
//feliratkozás//
- A hozzászóláshoz be kell jelentkezni
már csak arra nem jövök rá, hogy xmlhttprequesttel betöltött oldalon elindítani egy szkriptett a betöltéskor?
próbáltam a < body onload="függvény()"> -t, meg a headben a window.onload=function() { függvény(); } -t is.
szerk.: az ajaxos oldalbetöltést egy saját függvénnyel oldom meg:
loadTo('valami.php','cél_DIV_neve');
ezt a függvényt próbálom meghívni betöltéskor azon az oldalon, melyet szintén ezzel a függvénnyel hívok meg.
- A hozzászóláshoz be kell jelentkezni
mert egy documentben egy body van, ami mar lefutott.
AJAX-szal ne akarj full HTML-t betolteni. Amugy lehet irni kezelofuggvenyeket, plane ha mar irtal is, akkor pontosan tudod, mikor toltodott be, nem igazan ertem, hogy miert nem futtatsz le egy mar letezo javascriptet a beillesztes utan.
- A hozzászóláshoz be kell jelentkezni