Wyświetlanie okienka
Marcin - 23-10-2005 18:14
Wyświetlanie okienka
Witam!
Używam funkcji wyświetlającej nowe okienko:
function DisplayWindow(url) { var Win = window.open(url, "displayWindow", 'scrollbars, resizable, height=200, width=450'); }
czy istnieje możliwość, aby nie podawać height i width, a okienko samo dostosowało swój rozmiar do zawartości?
-- Pozdrawiam Marcin
Tomasz S. - 23-10-2005 18:14
Dnia 07-10-2005, pią o godzinie 16:34 +0200, Marcin napisał(a): > Witam! > > Używam funkcji wyświetlającej nowe okienko: > > function DisplayWindow(url) { > var Win = window.open(url, "displayWindow", 'scrollbars, resizable, > height=200, width=450'); > } > > czy istnieje możliwość, aby nie podawać height i width, a okienko samo > dostosowało swój rozmiar do zawartości?
Tak, ale robisz to juz w otwartym okienku .. tylko ze moze byc problem z tekstem .. bo co rozumiesz np przez szerokosc tekstu ??? jesli napiszesz tekst bez znakow nowej linit to przeciez nie otworzysz okienka o wysokosci jednego znaku a szerokoci np 3000 :) .. w przypadku tekstu najelpiej jest miec stala szerokosc, a tekst sie zalamie odpowiednio ...
jesli to obrazek to masz sprawe latwa .. masz zseroksoc obrazka i wysokosc .. i potem juz tylko ustawienie parametrow okienka ;)
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.javascript
porneL - 23-10-2005 18:14
On Fri, 07 Oct 2005 15:34:39 +0100, Marcin <xxx001@wp.pl> wrote:
> Witam! > > UÂżywam funkcji wyÂświetlajÂącej nowe okienko: > > function DisplayWindow(url) { > var Win = window.open(url, "displayWindow", 'scrollbars, resizable, > height=200, width=450'); > } > > czy istnieje moÂżliwoœÌ, aby nie podawaĂŚ height i width, a okienko samo > dostosowaÂło swój rozmiar do zawartoÂści?
Po pierwsze twój popup jest irytujący - jeśli wszystkie okna mają tą samą nazwę (różną od _blank), to następne "otworzenia" okna będą podmieniały zawartość w starym.
Wielkości teoretycznie można nie podawać, ALE prawie wszystkie przeglądarki poza IE to blokują, żeby nie dało się robić latających i skaczących okien.
Lepiej przygotuj rozmiar wcześniej: http://pornel.net/pups http://pornel.net/onclick
-- porneL
ethanak - 23-10-2005 18:14
On 2005-10-07 18:00, porneL wrote: [...] > Lepiej przygotuj rozmiar wcześniej: > http://pornel.net/pups > http://pornel.net/onclick
A co zrobić w przypadku kiedy nie możesz? Akurat ja tak mam...
ethanak
PS. Można przez ukrytą ramkę i img.onload, ale wolałbym jakoś prościej... tak żeby wywołać funkcję w stylu pokaz_obrazek("/dupa.jpg") i żeby się ładnie pokazał...
porneL - 23-10-2005 18:14
On Fri, 07 Oct 2005 17:01:14 +0100, ethanak <ethanak@p01ip.c0m> wrote:
> On 2005-10-07 18:00, porneL wrote: > [...] >> Lepiej przygotuj rozmiar wcześniej: >> http://pornel.net/pups >> http://pornel.net/onclick > > A co zrobić w przypadku kiedy nie możesz? Akurat ja tak mam...
Kiedy nie możesz?
W swoim przykładzie i tak mam na to odpowiedź - otwierać okno duże na zapas.
> PS. Można przez ukrytą ramkę i img.onload, ale wolałbym jakoś > prościej... tak żeby wywołać funkcję w stylu pokaz_obrazek("/dupa.jpg") > i żeby się ładnie pokazał...
Duże opóźnienie w otwieraniu okna może być irytujące...
Jeśli już, to bym to robił po stronie serwera. Można szybciej zassać obrazek i sprawdzić rozmiar (a wynik wrzucić do jakiegoś cache).
-- porneL
ethanak - 23-10-2005 18:14
On 2005-10-07 18:25, porneL wrote: [...] > W swoim przykładzie i tak mam na to odpowiedź - otwierać okno duże na > zapas.
Właśnie chciałbym takie ładne na wymiar... duże na zapas to jest dla bezjavasriptowców.
> >> PS. Można przez ukrytą ramkę i img.onload, ale wolałbym jakoś >> prościej... tak żeby wywołać funkcję w stylu pokaz_obrazek("/dupa.jpg") >> i żeby się ładnie pokazał... > > > Duże opóźnienie w otwieraniu okna może być irytujące...
No właśnie dlatego nie chcę tego stosować. > > Jeśli już, to bym to robił po stronie serwera.
Akurat chodzi o sytuację gdzie na serwerze nie mogę nic zrobić...
Normalnie mam w bazie podane wymiary obrazka i generator tworzy mi coś w stylu:
<a href="/obrazki/dupa.jpg" onclick="return show_image('/obrazki/dupa.jpg',640,480)"
i to jest OK.
Problem jest na przykład taki, że user ma możliwość podmienienia obrazka, a nie ma możliwości ingerencji w kod ani uruchomienia generatora.
W ogóle takich głupawych sytuacji mam więcej (np. obrazek jest na innym serwerze i nie mam szans sprawdzenia jakie ma rozmiary przed załadowaniem) - dlatego wolałbym mieć coś co ładnie otwiera mi okienko w rozmiarach automatycznie dopasowanych do obrazka.
Podany kiedyś przeze mnie kod ma wszystkie wady które wymieniasz (plus ta jedna, że czasami nie działa z przyczyny mianowicie takiej że nie działa) - natomiast tą jedną zaletę że czasami (w 95% przypadków) działa... i dlatego tam gdzie nie mam możliwości określenia rozmiarów po prostu go stosuję mając cichą nadzieję że użyszkodnik nie wsadzi mi obrazka który akurat dziwnym trafem ma rozmiary niełykalne przez mój skrypt :)
> Można szybciej zassać > obrazek i sprawdzić rozmiar (a wynik wrzucić do jakiegoś cache). >
Zawsze jest to opóźnienie - szczególnie w przypadku obrazków wysokiej jakości. Od strony serwera jakby nie patrzeć muszę zawsze wykonaćjakiś kod... niech to będzie nawet analiza pierwszych iluśtam bajtów :(
To co mi się w tej chwili nasunęło to wykorzystanie XMLHttpRequest (sprawdzenie rozmiarów obrazka może być zaszyte w dość prostym i szybkim module Apacza) i na podstawie tego co dostanę z serwera otwarcie okna w określonym rozmiarze - ale czy to nie jest wyprawa z czołgiem na mrówkę?
ethanak
porneL - 23-10-2005 18:14
On Fri, 07 Oct 2005 17:41:06 +0100, ethanak <ethanak@p01ip.c0m> wrote:
>> Duże opóźnienie w otwieraniu okna może być irytujące... > > No właśnie dlatego nie chcę tego stosować. >> >> Jeśli już, to bym to robił po stronie serwera. > > Akurat chodzi o sytuację gdzie na serwerze nie mogę nic zrobić...
No to jak nie możesz, to nie możesz...
>> Można szybciej zassać >> obrazek i sprawdzić rozmiar (a wynik wrzucić do jakiegoś cache). >> > Zawsze jest to opóźnienie - szczególnie w przypadku obrazków wysokiej > jakości. Od strony serwera jakby nie patrzeć muszę zawsze wykonać jakiś > kod... niech to będzie nawet analiza pierwszych iluśtam bajtów :(
No i? Dla serwera to pestka (na serwie możesz mieć n-megabitowe łącze, a nie n-kilobitowe, jak u klienta)
> To co mi się w tej chwili nasunęło to wykorzystanie XMLHttpRequest > (sprawdzenie rozmiarów obrazka może być zaszyte w dość prostym i szybkim > module Apacza) i na podstawie tego co dostanę z serwera otwarcie okna w > określonym rozmiarze - ale czy to nie jest wyprawa z czołgiem na mrówkę?
Eee, nie przesadzajmy z AJAX-modą.
window.open("http://serwer.z.php/otwieraczka?url=http://twoj.biedny.serwer/obrazek.jpg")
-- porneL
porneL - 23-10-2005 18:14
On Fri, 07 Oct 2005 18:40:42 +0100, porneL <pornel@despammed.com> wrote:
>> To co mi się w tej chwili nasunęło to wykorzystanie XMLHttpRequest >> (sprawdzenie rozmiarów obrazka może być zaszyte w dość prostym i szybkim >> module Apacza) i na podstawie tego co dostanę z serwera otwarcie okna w >> określonym rozmiarze - ale czy to nie jest wyprawa z czołgiem na mrówkę? > > Eee, nie przesadzajmy z AJAX-modą. > > window.open("http://serwer.z.php/otwieraczka?url=http://twoj.biedny.serwer/obrazek.jpg")
No dobra, ten przykład jest głupi :)
Ale można pobrać wymiary jakoś tak: <script src="http://serwer.z.php/otwieraczka?url=http://twoj.biedny.serwer/obrazek.jpg" />
-- porneL
ethanak - 23-10-2005 18:14
On 2005-10-07 19:55, porneL wrote: > On Fri, 07 Oct 2005 18:40:42 +0100, porneL <pornel@despammed.com> wrote: > > >>> To co mi się w tej chwili nasunęło to wykorzystanie XMLHttpRequest >>> (sprawdzenie rozmiarów obrazka może być zaszyte w dość prostym i szybkim >>> module Apacza) i na podstawie tego co dostanę z serwera otwarcie okna w >>> określonym rozmiarze - ale czy to nie jest wyprawa z czołgiem na mrówkę? >> >> >> Eee, nie przesadzajmy z AJAX-modą.
A, wcale nie jestem miłośnikiem czy nawet zwolennikiem AJAXa. Chodzi mi raczej o coś w stylu (w dużym uproszczeniu):
request.open(GET, "http://moj.serwer.bez.php/modules/otwieracz?"+ encodeURIComponent(adres)); request.send(null); eval(request.responseText);
gdzie moduł (nie skrypt w php, chodzi o te mikrosekundy) otwieracz zwraca po prostu linijkę:
window.open(...);
z odpowiednimi parametrami.
[...]
> Ale można pobrać wymiary jakoś tak: <script > src="http://serwer.z.php/otwieraczka?url=http://twoj.biedny.serwer/obrazek.jpg" > />
Rozumiem że ten php wypluwa z siebie document.write(cośtam) (najprościej ale fujaste strasznie) czy obrazki[url]={w:...,h:...}; (wymaga dodatkowego skryptu, ale to pryszczyk)
Tylko do czego mi potrzebne wymiary 10 obrazków od razu przy ładowaniu strony? Po co mój i tak zapracowany Apacz ma zajmować się przekazywaniem rozmiarów obrazków gościowi co ogląda stronę monitorem brailowskim? Strona jest statyczna, Apacz ma ją pobrać i wyświetlić - tu nie chodzi o łącze od strony serwera ale o prosty fakt, że procesorów i pamięci jakoś ostatnio za darmo nie rozdają... czyli wszystkie operacje powinny być wykonywane wyłącznie wtedy, gdy użytkownik sobie tego zażyczy, a nie na zapas.
Zresztą - gdyby trzeba było pobierać rozmiary obrazków przy ładowaniu strony to pewnie SSI (nawet z drobną modyfikacją mod_include) to by było lepsze rozwiązanie...
Jeszcze lepsze by było coś w stylu:
body.onload="window.sizeToContent()"
co oczywiście działa świetnie pod warunkiem że korzystam z Gecko i w chwili wykonania sizeToContent mam ustawiony odpowiedni przywilej - nie jestem pewien jak zareagowałby przeciętny Kowalski na pojawiającąsię przy próbie obejrzenia zdjęcia informację "Skrypt zażądał rozszerzonych uprawnień które mogą być niebezpieczne bla bla bla" ;)
ethanak
PS. A w sumie najlepsze by było coś takiego:
<a href="obrazek.jpg" onclick="window.showImage('obrazek.jpg');return false">
problem w tym że metoda showImage na razie nie istnieje i nic jej istnienia nie zapowiada :(
porneL - 23-10-2005 18:14
On Sat, 08 Oct 2005 06:34:10 +0100, ethanak <ethanak@p01ip.c0m> wrote:
>>> Eee, nie przesadzajmy z AJAX-modą. > > A, wcale nie jestem miłośnikiem czy nawet zwolennikiem AJAXa. Chodzi mi > raczej o coś w stylu (w dużym uproszczeniu): > > request.open(GET, > "http://moj.serwer.bez.php/modules/otwieracz?"+ > encodeURIComponent(adres)); > request.send(null); > eval(request.responseText); > > gdzie moduł (nie skrypt w php, chodzi o te mikrosekundy) otwieracz > zwraca po prostu linijkę: > > window.open(...); > > z odpowiednimi parametrami.
Nie przejdzie. Window.open będzie już przyblokowane przez popup blockery (AFAIK bo będzie już wywołane z callbacku, a nie z wątku onclick).
Poza tym dlaczego się siłować w momencie kliknięcia? Nie lepiej podczepić script, który poda wszystkie wymiary wcześniej?
>> Ale można pobrać wymiary jakoś tak: <script >> src="http://serwer.z.php/otwieraczka?url=http://twoj.biedny.serwer/obrazek.jpg" >> /> > > Rozumiem że ten php wypluwa z siebie document.write(cośtam) (najprościej > ale fujaste strasznie) czy obrazki[url]={w:...,h:...}; (wymaga > dodatkowego skryptu, ale to pryszczyk)
Ależ nie. Jestem wrogiem doc.write :) Może być coś w stylu JSON, czyli wyplucie tablicy, którą sobie onclick użyje.
> Tylko do czego mi potrzebne wymiary 10 obrazków od razu przy ładowaniu > strony? Po co mój i tak zapracowany Apacz ma zajmować się przekazywaniem > rozmiarów obrazków gościowi co ogląda stronę monitorem brailowskim?
Po to, żeby było szybciej. Jeśli zrobisz sobie cache wymiarów, to Twój apacz się nie napracuje.
Poza tym kto Ci daje zlecenia na strony o ruchu przymulającym Apache, a bez możliwości użycia porządnego CMS i bazy danych!?
> PS. A w sumie najlepsze by było coś takiego: > > <a href="obrazek.jpg" onclick="window.showImage('obrazek.jpg');return > false"> > > problem w tym że metoda showImage na razie nie istnieje i nic jej > istnienia nie zapowiada :(
Istnieje. Mi w Operze <a href="obrazek.jpg"> wykonuje showImage. Baa, nawet walnięcie spacji wywołuje mi wtedy showSlideshow().
-- porneL
ethanak - 23-10-2005 18:15
On 2005-10-08 15:32, porneL wrote: >[...] > > Nie przejdzie. Window.open będzie już przyblokowane przez popup > blockery (AFAIK bo będzie już wywołane z callbacku, a nie z wątku > onclick).
Kur... faktycznie - mozillowy sposób myślenia się mści, człowiek zapomina że reszta świata olewa trzeci parametr request.open :(
I pomyśleć, że nie mogę skorzystać z istniejących mechanizmów przeglądarki bo iluśtam bęcwałów nadużywa ich do tego stopnia, że normalny człowiek na dzień dobry owe mechanizmy wyłącza :(
> > Poza tym dlaczego się siłować w momencie kliknięcia? Nie lepiej > podczepić script, który poda wszystkie wymiary wcześniej? >
Kombinuję cały czas jak to sensownie zrobić. W momencie kliknięcia najbardziej by mi pasowało - ale jak widzę niespecjalnie się da.
Co nie znaczy że się poddałem :)
[...]
> Poza tym kto Ci daje zlecenia na strony o ruchu przymulającym Apache,a > bez możliwości użycia porządnego CMS i bazy danych!?
Sam sobie takie daję niestety - za dużo tłumaczenia dlaczego bo o tym można książkę napisać, w każdym razie sytuacja wygląda w uproszczeniu tak, że istnieje coś w rodzaju cms-a, istnieje baza danych, tylko nie zawsze z przyczyn czysto technicznych może zawierać informacje o obrazku. > [...] >> problem w tym że metoda showImage na razie nie istnieje i nic jej >> istnienia nie zapowiada :( > > > Istnieje. Mi w Operze <a href="obrazek.jpg"> wykonuje showImage. Baa, > nawet walnięcie spacji wywołuje mi wtedy showSlideshow(). >
Tak - tylko nie chodzi tu o Ciebie z Operą (która zresztą ma własne mechanizmy oglądania obrazków - IMHO bardzo wygodne) czy mnie z FF (jak mi będzie potrzebne window.showImage to sobie napiszę, zresztą oglądaczka obrazków podobna do tej Operowej też jest), a o przeciętnego Kowalskiego z (nIEstety) wiadomym parszywym ustrojstwem do obglondywania stronek...
<div class="dream"> Gdyby Kowalski mógł sobie wybrać, czy obrazek otworzy się w nowymoknie, automatycznie dopasowanym do rozmiaru, w nowym panelu czy w tym samym, czy w ogóle w jakimś specjalnym miejscu do oglądania obrazków przeznaczonym... to ja bym wtedy musiał napisać tylko <a href="obrazek.jpg"> i życie stałoby się prostsze... </div>
Wracajmy do normalnego życia - gdzie to ja mam ten opis API Apacza...
ethanak
dk75 - 23-11-2005 11:07
Marcin wrote:
> Używam funkcji wyświetlającej nowe okienko: > function DisplayWindow(url) { > var Win = window.open(url, "displayWindow", 'scrollbars, resizable, > height=200, width=450'); > } > czy istnieje możliwość, aby nie podawać height i width, a okienko samo > dostosowało swój rozmiar do zawartości?
Otwierasz okienko z małymi rozmiarami (jak potrafisz to ukryte, ja jeszcze nie próbowałem - na razie za cienki jestem ;PPPp), wpisujesz w nie obrazek, odczytujesz jego oryginalne rozmiary, przekazujesz do openera, zamykasz okienko i otwierasz docelowe z pobranymi rozmiarami.
Próbowałem zrobić jeszcze preload i odczytywanie z Array ale sprawdzanie czy obrazek już się załadowaj jest powyżej moich sił. Nie wiem dlaczego ale właściwości objektu "Image" się nie odświerzają. Pętla "while(!array[x].complete){}" wpada w infinite-loop (tak samo 'array[x].width' - wartość "undefined"). Sprawdzane na FF1.0.7 jak i IE 6.0 na localhoście - przynajmniej skrypt jest przerywany. Na zdalnym hoście jeszcze gorzej, bo FF się blokuje i zjada pamięć i CPU i trzeba go killować z menadżera zadań.
"resizeTo" można sobie darować. Pod IE otwarcie okienka 640x480 i zrobienie "resizeTo(640,480);" powoduje zmniejszenie okienka ;PPPp
-- Krzysztof 'DK75' Duchnowski GetFirefox - http://www.spreadfirefox.com/?q=affi...p;id=0&t=1
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Re: [MySQL] wyswietlenie NIPu jako ciąg cyfr bez spacji i myślników
Jak wyswietlic dane z dwoch tabel gdy dla jednej z nich jest brak jest danej wartosci
[MS SQL] Zapytanie wyswietlajace (lub nie) adresy na podstawie warunku
[MSSQL] edycja rekodu w tabeli i wyswietlanie danych
BDGrid + Postgresql i wyswietlenie 100000 rekordow - problem
[MS SQL] Wyswietlanie fragmentu komorki tekstowej
[Firebird] Łączenie dwóch tabel i wyświetlenie różnicy
skrypt wyswietlajacy pomniejszony obrazek w gd
[mysql] wyswietlenie drogi do galezi drzewa
W czym wyswietlac schemat bazy danych ORACLA
zanotowane.pldoc.pisz.plpdf.pisz.plmarcelq.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|