JavaScript i window.open()

codemaker

Iskusan
Banovan
Poruka
6.514
Ne mogu da resim.

Imam TEXT input field, koji ima i "onBlur="testwin()"
Dakle, kad unesem nesto u polje, i sa TAB ili drugacije izadjem iz tog polja, aktivira se Testwin() funkcija, koja kreira novi mali popup prozor i u kome napisem sta sam to uneo u text polje. Taj prozor je vidljiv unutar glavnog prozora i tek kad kliknem bilo gde van njega, zatvori se

To radi normalno u Internet Exploreru ali u Netscape 7.2 samo bljesne prozor i ne prikaze se, vec vidim u trayu da je aktivan jos jedan prozor. KAda ga otvorim, vidim sadrzaj kakav sam i hteo. Moram ga posebno zatvoriti.

Naravno to je skracena verzija mog problema ali sustina je da radi u IE ali ne i u Netscape. Ima li tu pomoci?

Evo jako pojednostavljenog primera:
****
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript1.1">
var newWindow = 0
function makeNewWindow(iz) {
if (!newWindow) {
newWindow = window.open("","","width=300, height=450")
newWindow.document.write("<HTML><HEAD><TITLE>Another SubWindow</TITLE></HEAD>")
newWindow.document.write("<BODY onBlur='self.close()' bgcolor='salmon'><H1>Salmon Window</H1>")
newWindow.document.write("<H1>"+iz+"</H1>")
newWindow.document.write("</BODY></HTML>")
newWindow.document.close()
} else {
newWindow.close()
}
}

function testTest(iz) {
makeNewWindow(iz)
}

function WinClose() {
if (newWindow) {
newWindow.close()
newWindow = 0
}
}

</SCRIPT>
</HEAD>
<BODY onFocus="WinClose()">
<FORM>
<INPUT TYPE="text" VALUE="1234" NAME="iznos" onBlur="testTest(iznos.value)">
<INPUT TYPE="button" NAME="newOne" VALUE="Show new window" onClick="testTest(iznos.value)">
</FORM></BODY></HTML>
***


Namerno je iskomplikovan poziv, jer je to simulacija stvarnih poziva i cekiranja unosa.
U Netscape 7.2, Klikom na button, otvara prozor i normalno zatvara kada kliknem bilo gde van njega.
Ako pak aktiviram "onBlur", nista se ne desava.
(IE odradjuje besprekorno ovaj kod.)

Usijala mi se mreza od trazenja pomoci preko googla, ali nista pametno nisam nasao. Treba mi bas TEXT polje da odradjuje rutinu, mada button radi i u Netscape 7.2, ali to nije to sto mi treba.

Da li je moguce TOLIKA nekompatibilnost IE<->Netscape

Gajba piva za pronalazaca resenja i pomoci :)
 
Prvo, ta skripta koju si ti gore naveo neće raditi ni u jednom browseru. Svaki browser će prvo otvoriti popup prozor, pa će ga odmah i zatvoriti. Proveri sam:
http://m.1asphost.com/algol/razno/codemaker1.html

Drugo, ako napraviš neke manje izmene, tj. izbaciš newWindow.close() iz treće, "WinClose()" funkcije, i ako se odrekneš zatvaranja popup prozora pomoću "onBlur" eventa, tj. odlučiš se za "onClick" event, skripta će raditi u svim browserima koji imaju izključen popup blocker, kao i u nekima kod kojih je isti uključen. Proveri:
http://m.1asphost.com/algol/razno/codemaker2.html

Treće, pošto jako mnogo ljudi koristi popup blockere, što ugrađene u browsere, što zasebne, otvaranje popup prozora oduzimanjem fokusa text obrazcu, tj. pomoću "onBlur" eventa nije dobra ideja, jer se tim ljudima taj popup najverovatnije na taj način neće otvoriti (popup blockeri taj popup tretiraju kao "unwanted"). Zato je ipak najbolje ostaviti i dugme sa strane.

Eto, nisam ti pomogao baš onako kako si ti tražio, tj. nisam ukapirao zašto Netscape 7.2 prvo otvori popup, pa ga odmah i zatvori, ali nije loša opcija ni zatvaranje pomoću onClick eventa (unutar popup prozora). Ne razumem zašto ga želiš zatvarati baš sa onBlur.

Pozdrav i javi ako uspeš da rešiš problem na onaj prvi način, kako si iz početka mislio.
 
Đenka:
Prvo, ta skripta koju si ti gore naveo neće raditi ni u jednom browseru. Svaki browser će prvo otvoriti popup prozor, pa će ga odmah i zatvoriti. Proveri sam:
http://m.1asphost.com/algol/razno/codemaker1.html
Prvo, hvala ti za trud i prebacivanje HTM na sajt. Stvarno cenim tvoj postupak ali nazalost nisi u pravu :( Ovo radi u IE bez greske! Probao malocas, kao sto sam vec milion puta testirao ...
Netscape se ponasa kao sto sam opisao..
Nemam instalisan Netscape nizi od verzije 7.1 ali zakleo bih se da je to radilo na nizoj verziji (7.0 ili jos nizoj, jer ne bih tek tako problem ostavio od ranije a da ne proverim i testiram kako se popup ponasa, ne mogu da se setim, ove rutine su radjene pre godinu dana) :(

Đenka:
Drugo, ako napraviš neke manje izmene, tj. izbaciš newWindow.close() iz treće, "WinClose()" funkcije, i ako se odrekneš zatvaranja popup prozora pomoću "onBlur" eventa, tj. odlučiš se za "onClick" event, skripta će raditi u svim browserima koji imaju izključen popup blocker, kao i u nekima kod kojih je isti uključen. Proveri:
http://m.1asphost.com/algol/razno/codemaker2.html

Da, moze se i pomocu dugmeta napraviti da se zatvara popup (vec sam to probao), ali to ne menja na stvari, i dalje se iz textualnog INPUT ne moze aktivirati popup, jer se u Netscape odmah i zatvori cak i u ovom drugom primeru, bez obzira sto je namesteno da se zatvara klikom na tekst koji si dodao. IE odradi i ovo normalno.
Ceo problem se svodi na onBlur, koji iz text inputa kad koristim Netscape, iz nekog razloga otvara i ODMAH zatvara prozor ne cekajuci nista. IE radi ok u obe varijante

Đenka:
Treće, pošto jako mnogo ljudi koristi popup blockere, što ugrađene u browsere, što zasebne, otvaranje popup prozora oduzimanjem fokusa text obrazcu, tj. pomoću "onBlur" eventa nije dobra ideja, jer se tim ljudima taj popup najverovatnije na taj način neće otvoriti (popup blockeri taj popup tretiraju kao "unwanted"). Zato je ipak najbolje ostaviti i dugme sa strane.
Tu si u pravu, zbog toga sada i idem na varijantu sa "alert()" umesto popup prozora, ali je popup prozor fleksibilniji i lepsi na kraju krajeva.

Đenka:
Eto, nisam ti pomogao baš onako kako si ti tražio, tj. nisam ukapirao zašto Netscape 7.2 prvo otvori popup, pa ga odmah i zatvori, ali nije loša opcija ni zatvaranje pomoću onClick eventa (unutar popup prozora). Ne razumem zašto ga želiš zatvarati baš sa onBlur.
Iz Netscape, problem i dalje postoji, nazalost :( Meni je bilo pre svega najvaznije da se prozor uopste pojavi nakon "onBlur" iz textualnog polja. To u Netscape ne radi, barem ne u verziji 7.2. A nacin zatvaranja moze i "onBlur" ili dugmetom, nije toliko bitno, mada se radi o popup prozoru koji samo obavesti, pa sam zeleo da izbegnem visak klika, jer kad korisnik procita prozor, dovoljno je da klikne u sledece polje i prozor se zatvara a on nastavlja rad. Ovako bi morao prvo da klikne na dugme u popup prozoru a zatim i u polje u kom zeli nastaviti rad. Osim toga, to je jedan sajt koji radim za Amere, nemas pojma koliko su ljudi tamo usko orijentisani, ako mu nisi rekao da zatvori prozor, nikad ga nece zatvoriti. Problem je da precesto zaborave da kliknu na dugme za zatvaranje popup prozora, pa se cela stvar zavrsi tako sto imaju milion malih prozora u tray, a onda se cude...

Đenka:
Pozdrav i javi ako uspeš da rešiš problem na onaj prvi način, kako si iz početka mislio.
Hvala ti na trudu. Za sada prebacujem sve u "alert()" umesto popup. Naravno, ako nadjem resenje i razlog razlicitog ponasanja IE i Netscape, javicu ovde svakako, da se neko drugi ne muci, kad se ja vec zlopatim :)
Pozdravljam te.
 
E, koji trip, čoveče! :shock:

Kod mene ova, prva skripta ne radi ni u jednom browseru. Kad input text field izgubi fokus, otvori se popup prozor, ali se odmah i zatvori.

Dok ova, druga skripta radi i u Netscape 7.2, ali samo kad se izključi popup blocker.

Ako ti Netscape 7.2 odmah zatvori popup i u drugom primeru, onda sigurno nisi izključio popup blocker. Probaj da ga izključiš u Edit > Preferences > Privacy and Security > Popup Windows > pa odčekiraj opciju Block unrequested popup windows.

Testirao sam obe skripte u IE 6 (SP2, sa popup blockerom), Operi 7.54, Netscapeu 7.2, Mozilli 1.7.5 i Mozilla Firefoxu 0.8. i prva mi ne radi ni u jednom, druga radi u svima, uz uslov da je u Netscapeu, Mozilli i Firefoxu popup blocker izključen. Koliko sam shvatio, tebi ni druga ne radi u Netscape 7.2?

Inače, za zatvaranje popup prozora ne moraš da ugrađuješ dugme u popup, dovoljno je da koristiš onClick event unutar BODY taga u popup prozoru ( <body onClick='self.Close()'>). Onda korisnik treba da klikne bilo gde unutar popup prozora da bi ga zatvorio.

Ajd izključi popup blocker u Netscapeu i probaj da otvoriš i prvi i drugi primer da vidiš jel rade?
Kod mene radi drugi...
 
Ok, sad sam stvarno zbunjen...

Možda pričamo o različitim stvarima.
Kod mene obe skripte rade u svim browserima kad pritisnem dugme "Show new window". Ali nije u tome stvar....

Probajte da otvorite 1. skriptu
- obrišite ono "1234" iz text fielda
- upišite bilo šta u text field
- kliknite NE na dugme, već bilo gde na praznu površinu prozora.
Da li vam se otvara (i ostaje otvoren) manji popup prozor u kojem piše ono što ste uneli u text field ?
Znači, popup treba da se otvori i kad kliknete na praznu površinu, a ne samo na dugme (dugme nije sporno, ono radi u svakom browseru).
Navedite i koji ste browser koristili.

Nije moguće da samo kod mene ne radi... :? Ni u IE, ni u Operi, ni u Netscapeu...
 
Dakle definitivni rezultat:

Internet Explorer:
- Unos teksta i TAB, otvara prozor sa upisanim sta sam uneo i na klik bilo gde VAN tog popup prozora, uredno ga zatvori
- Klik na dugme, otvara popup i klikom VAN tog popup prozora, uredno ga zatvori

Netscape 7.1
- Unos teksta i TAB, otvara prozor sa upisanim sta sam uneo ali se u delicu sekunde vidi i odmah zatim spusta u sistem tray kao SLEDECI prozor, koji se moze izabrati, ali se NE zadrzi na ekranu
- Klik na dugme, otvara popup i klikom VAN tog popup prozora, uredno ga zatvori

Popup bloking potpuno iskljucen, sada ponovo proverio, ali je bio oduvek iskljucen u oba browsera...

Toliko o kompatibilnosti razlicitih browsera. Ono sto me nervira je da se uopste ne radi o sofisticiranom JavaScript pristupu. Trivijalija.
A posebno je zanimljivo, da ocigledno "onBlur" event u Netscape ima razlicit efekat na ceo sistem od istog eventa aktiviranog u IE... Jer, problem imam samo na jednom mestu - u Netscape kod onBlur is text inputa. sve ostalo radi ok...
Pitam se gde jos ima razlike koje se za sada ne manifestuju...

Ajd' u DVA kamiona MB piva :)
 
Oops, eto novog problema.
Internet Explorer (do sada "radilo normalno")
Kako je Djenka predlozio, uneo sam u prvi skript neki tekst i umesto TAB, kliknuo misem bilo gde u prozor (znaci trebalo bi da je aktiviran "onBlur" za text input. popup se za delic sekunde otvorio i odmah pao dole u tray kao novi prozor dostupan za pregled ali se NIJE zadrzao na ekranu!!

Ako to isto u Internet Exploreru ponovim koristeci TAB za prelaza iz text input polja, popup prozor se normalno otvori i OSTANE na ekranu!!!

Znaci, ako umesto TAB za zavrsetak unosa u text input koristim misa, u OBA broswera se pojavljue ISTI problem!! jedino sto je problem kod Netscape izlaz iz inputa sa TAb i KLIK MISEM - a kod IE samo ako izlazim iz unosa sa KLIK MISEM

Izgleda da se cena povecala na TRI kamiona MB piva :)
 
E, tako već može...
Znači, prva skripta radi u IE 6, ali samo uz uslov da je popup blocker izključen i da se input text field deselektuje (defokusira) pomoću Tab tipke. U to slučaju se otvori popup koji ostane otvoren i u fokusu.

A baš sam se pitao kako to da kod mene ne radi, a kod tebe radi. Stvar je bila u tome što sam ja iz input text polja izlazio klikom na glavni prozor, a ti Tab topkom.

Sad je stvar jasnija. Klikom na glavni prozor se defokusira text polje, ali se istovremeno i dovodi u fokus "body" glavnog prozora, što aktivira funkciju WinClose() i newWindow.close() komandu u njenom telu (jer u body-ju imaš onFocus="WinClose()" poziv). Tab tasterom se samo izlazi iz text polja, a ne dovodi se u fokus body glavnog prozora, pa nema aktiviranja WinClose() funkcije.
Rekoh ti ja da je ono "newWindow.close()" u WinClose() funkciji višak...

Kako god bilo, cela ova rasprava je bila više akademskog tipa, jer ćeš ipak morati popup prozor da otvaraš klikom na dugme, zbog načina na koji popup blockeri tretiraju otvaranje prozora pomoću onBlur i onFocus eventa (kao "unwanted").
 
Nismo nazalost nista resili :(

U oba slucaja u Netscape, mijedan skript ne radi ako iz tekstualnog unosa izadjem na bilo koji nacin (TAB ili klik u glavni prozor)

U IE, skript radi samo ako izadjem sa TAB ali ne i ako izadjem sa klikom misa.

U oba skripta, ako koristim dugme, skript odradi posao, ali mi je to neprihvatljivo, jer imam mnogo textualnih polja u formi i ne mogu za svako da imam dugme validacije.

Nema veze, vec sam sve strane koje sadrze validaciju, prebacio da pomocu "alert()" obavestava o problemima.

Hvala na trudu i nadam se da necu imati vise iznenadjenja. Ionako se trudim da koristim JavaScript sto manje ali nekada je neizbezno...
 
codemaker:
Oops, eto novog problema.
Internet Explorer (do sada "radilo normalno")
Kako je Djenka predlozio, uneo sam u prvi skript neki tekst i umesto TAB, kliknuo misem bilo gde u prozor (znaci trebalo bi da je aktiviran "onBlur" za text input. popup se za delic sekunde otvorio i odmah pao dole u tray kao novi prozor dostupan za pregled ali se NIJE zadrzao na ekranu!!

Ako to isto u Internet Exploreru ponovim koristeci TAB za prelaza iz text input polja, popup prozor se normalno otvori i OSTANE na ekranu!!!

Znaci, ako umesto TAB za zavrsetak unosa u text input koristim misa, u OBA broswera se pojavljue ISTI problem!! jedino sto je problem kod Netscape izlaz iz inputa sa TAb i KLIK MISEM - a kod IE samo ako izlazim iz unosa sa KLIK MISEM

Izgleda da se cena povecala na TRI kamiona MB piva :)

E sada ga jbg i meni se isto desilo kao i tebi!!!
samo na kratko blicne i nestane !!!
 

Back
Top