Używanie ramek iframe w roku. Iframe i Frame - czym są i jak najlepiej wykorzystać ramki w HTML

Jednym z najczęstszych sposobów infekowania komputerów osób odwiedzających witrynę jest wykorzystanie luki związanej z przepełnieniem buforów przeglądarki użytkownika. Przepis jest dość prosty. Osoby atakujące wstrzykiwają złośliwy kod, wstawiając ramki iframe na strony internetowe i próbując pobrać złośliwe pliki na komputer niczego niepodejrzewającego użytkownika. Wykrycie takich złośliwych wstawek na twoich stronach internetowych jest dość łatwe. Trzeba tylko zwrócić uwagę na fragmenty kodu korzystające z połączenia iframe. Takie wstawki mogą znajdować się zarówno w plikach HTML, jak i PHP.

Atakujący prawie zawsze starają się w jak największym stopniu ukryć przed właścicielami korzystanie ze złośliwych zakładów, ukrywając je wizualnie dla użytkowników zasobów i zaciemniając (zaciemniając) ich kod.

Ukrywanie wstawek iframe przed oczami użytkowników

Aby zamaskować złośliwą wstawkę, hakerzy w większości przypadków stosują w kółko tę samą metodę - ustawiają właściwości tagu tak, aby nie był on wyświetlany na stronie, ale był zawarty w jej kodzie. Najczęściej szerokość i długość są ustawione na zero lub jeden piksel: szerokość="1px", wysokość="1px".

Na przykład złośliwy kod może wyglądać następująco:

Jednak często hakerzy nie ograniczają się do takiego przebrania, uzupełniając ukrywanie bardziej wyrafinowanymi technikami, które mogą zmylić i skomplikować wyszukiwanie i eliminację nawet dla zaawansowanych programistów.

Zaciemnienie

Jest to jedna z najpopularniejszych metod zabezpieczania kodu w programowaniu w językach nieustrukturyzowanych (takich jak np. PHP). W rzeczywistości całe szyfrowanie polega na mieszaniu/zaciemnianiu samego kodu poprzez zmianę nazw zmiennych i innych elementów. W rezultacie dość trudno jest rozpoznać oznaki złośliwości w zaciemnionym kodzie i jest to możliwe jedynie na podstawie pośrednich oznak jawnego użycia specjalnych funkcji JS (JavaScript) używanych specjalnie do zaciemniania: ucieczka, z CharCode.

Jednak wykrycie zaciemnionego kodu na stronie internetowej nie oznacza, że ​​jest on zdecydowanie szkodliwy lub łatwy do usunięcia. Musisz zrozumieć, że po pierwsze, napastnicy mogą zaciemnić kod, przechwytując także część działającego kodu witryny. W takim przypadku, próbując wyciąć zaszyfrowany fragment, ryzykujesz awarią zasobu. Po drugie, zaciemniony kod nie może być szkodliwy, a jedynie konsekwencją działania Twojego CMS-a lub jego poszczególnych komponentów, a także zainstalowanych przez Ciebie dodatkowych modułów.

W każdym razie, jeśli natkniesz się na podejrzany, zaciemniony kod, musisz działać z najwyższą ostrożnością.

Inne oznaki infekcji

Jeśli masz wątpliwości, czy znaleziony kod jest złośliwy, możesz spróbować przeanalizować sygnały pośrednie. Jeśli masz dużą liczbę plików w swojej witrynie, możesz zwrócić uwagę na datę i godzinę ostatniej modyfikacji plików. Jeśli dobrze znasz scenariusze działania Twojego CMS-a z plikami, możesz przyjrzeć się bliżej plikom zmienionym tego samego dnia i w tym samym czasie lub zmianom zachodzącym w tym samym odstępie czasu, np. 1 sekundy.

Jeśli jesteś zaawansowanym programistą, możesz napisać skrypt, który sprawdzi obecność typu wstawek, które wykryłeś we wszystkich plikach na Twojej stronie. Jeśli jesteś jeszcze bardziej zaawansowany, możesz wymusić na skrypcie wycinanie wstawek, jednak zawsze musisz zachować ostrożność.

Metody alternatywne

Zalecamy skorzystanie z usługi Virusday w celu usunięcia złośliwych wstawek, nawet jeśli jesteś zaawansowanym specjalistą. Nasz serwis nie tylko zawiera wiele sygnatur, które można wykorzystać do wyszukiwania złośliwych kodów, ale także oszczędza czas! Ponadto koszt korzystania z Virusday do czyszczenia będzie prawdopodobnie znacznie niższy niż płacenie za własny czas. Będziesz w stanie wykryć i usunąć nie tylko wstawki iframe, ale także wiele innych zagrożeń. Prawdopodobnie będziesz w stanie znaleźć i automatycznie usunąć zagrożenie, które spowodowało pojawienie się wstawek iframe w Twojej witrynie, takie jak Shell.

Zespół serwisowy Virusday.

Instrukcje

Język HTML (HyperText Markup Language) udostępnia dwa typy ramek. „Pływający” jest bardziej elastyczny i łatwiejszy do wstawienia do istniejącego. Ogólnie konstrukcja opisująca wstawienie okna za pomocą ruchomej ramy wygląda następująco: W tym przypadku źródłem danych dla tej ramki jest istniejąca witryna (atrybut src). Zostanie otwarta w ramce o wymiarach 400 na 300, zgodnie z atrybutami szerokości i wysokości. Możesz także określić stronę swojej witryny w atrybucie src. W tym przypadku wystarczy podać adres względny (czyli adres względem strony, na którą wstawiana jest ramka): W tym przykładzie nie określono wysokości ramki, ale istnieje atrybut id. Używając go, możesz użyć CSS(), aby ustawić tę ramkę na wymagane wymiary:

Inny rodzaj ramek – „klasyczny” – wymaga osobnej strony, która będzie zawierała opis budowy ramek. Same ramki będą umieszczone na osobnych stronach, a może nawet w osobnych serwisach. Kod HTML takiej strony kontenera dla ramek może wyglądać następująco:




Żadnych bloków ... I ... , które są wymagane w przypadku zwykłych stron, nie powinno się tutaj znajdować. W tym przykładzie jest to otwierający tag kontenera zawiera atrybut rows - oznacza to, że przestrzeń strony powinna zostać podzielona w pionie i pierwsza ramka otrzyma górną część. Jeśli zamienisz wiersze na kolumny, podział będzie poziomy. Wartość tego atrybutu „*,*” oznacza, że ​​proporcje podziału są równe – po 50%. Jeżeli podasz np. „20%,*”, to na pierwszą klatkę przypada tylko 20%, a na drugą resztę miejsca. Użytkownik może zmieniać te proporcje przeciągając brzegi ramki myszką, ale istnieje możliwość zablokowania tej akcji. Aby to zrobić, musisz dodać atrybut noresize do tagu konkretnej ramki. Możesz także określić rozmiar pionowych i poziomych marginesów sąsiedniej ramki (atrybuty marginesu i marginesu): Możliwe jest ustawienie reguł zachowania pasków przewijania każdej klatki z osobna. Odbywa się to za pomocą atrybutu przewijania, który może zawierać jedną z trzech predefiniowanych wartości. Jeśli określisz scrolling="auto", paski przewijania pojawią się, gdy zawartość ramki nie zmieści się w jej granicach. Jeśli „tak” – paski będą obecne stale, niezależnie od tego, czy będą potrzebne. Jeżeli „nie” – będzie to oznaczać, że dla tej ramki paski przewijania są wyłączone.

W oparciu o informacje przedstawione w poprzednich dwóch krokach musisz skonstruować kod HTML, który będzie bardziej odpowiedni do rozwiązania Twojego problemu. Następnie pozostaje już tylko wstawić go do kodu źródłowego strony. Aby to zrobić, możesz skorzystać z edytora stron swojego systemu zarządzania witryną - otwórz w nim żądaną stronę, przejdź do trybu edycji kodu HTML i wklej swój kod w żądane miejsce na stronie. Możesz też pobrać plik kodu źródłowego strony za pomocą menedżera plików systemu zarządzania hostingiem lub systemu zarządzania witryną, otworzyć go w edytorze tekstu i wkleić w nim kod. Następnie użyj tej samej metody, aby przesłać zmieniony kod z powrotem na serwer.

Witam, drodzy czytelnicy bloga. Dzisiaj porozmawiamy o ramkach w HTML. Jasne jest, że zaczniemy od początku, a mianowicie od tego, jakie to zwierzę. Porozmawiamy także o teraźniejszości (Frame) i przyszłości (Iframe) tych elementów w aktualnej wersji hipertekstowego języka znaczników oraz w nowym standardzie HTML 5 z rozszerzeniem .

Na końcu artykułu, po szczegółowym opisaniu procesu tworzenia wbudowanych ramek i ich klasycznej struktury w kodzie HTML (już rzadko używanym), poruszymy kwestię zasadności budowania na nich witryny, a także omówimy możliwe sposoby ich wykorzystania w bieżącym okresie na przykładzie mojego bloga.

Co to jest i czym różni się element Iframe od ramki?

Co to jest? Okazuje się, że można ich używać nie tylko na stronach internetowych, ale także w dowolnych aplikacjach do programów, różnią się jednak tym, że okno strony internetowej lub aplikacji zostanie podzielone na kilka obszarów, do każdego z których ładowany jest osobny dokument . Co więcej, te obszary ramki zachowują się niezależnie od siebie.

Prawdopodobnie najbardziej oczywistym przykładem ich użycia, z którym zetknął się prawie każdy z Was, są tzw. pliki pomocy, które posiada wiele programów zainstalowanych na Waszym komputerze.

W lewym oknie zostanie wczytany plik z menu pomocy, a w prawym wyświetlony zostanie dokument odpowiadający wybranej pozycji menu. Warto zauważyć, że taka konstrukcja pozwala nie przeładowywać pliku z menu do lewego okna podczas otwierania nowego dokumentu w prawym. Z tego właśnie się składa główna zaleta korzystania z ramek w HTMLu.

Właściwie już samą nazwę tych elementów należy rozumieć jako niezależne okno. Za pomocą ramek mamy możliwość podzielenia jednego dużego okna na kilka fragmentów, które z kolei mogą służyć jako odbiorniki dla odrębnych, niezależnych od siebie dokumentów (stron, tekstów, obrazów, filmów itp.).

W jaki sposób tworzona jest struktura ramek w hipertekstowym języku znaczników? Jeśli mówimy o standardzie HTML 4.01 (według klasyfikacji), który jest obecnie najważniejszy, to wykorzystywane są do tego trzy elementy - Frame, Frameset i Noframes.

Iframe - wbudowana ramka w standardzie HTML 5

Jeśli mówimy o standardzie HTML 5 (nasza przyszłość, którego niektóre elementy są już obsługiwane przez wiele przeglądarek), to nie będzie tagów Frame, Frameset i Noframes, a jedynie klasyczna struktura ramki, zamiast tego będzie jeden pojedynczy znacznik Iframe (embeddedframe), o którym porozmawiamy na początku, a następnie zwrócimy uwagę na klasyczny schemat z wersji 4.01, który jest obecnie w użyciu.

Iframe w odróżnieniu od omawianych poniżej klasyków nie wymaga zastępowania tagu Body tagami Frameset. Te. znacznik ten można wstawić na zwykłych stronach, na przykład wewnątrz akapitu lub gdziekolwiek indziej. W swojej istocie element ten jest bardzo podobny do tagu Img, który już rozważaliśmy.

Jest to element wbudowany z wymienną zawartością, ponieważ zachowuje się dokładnie jak element wbudowany, ale jest wyświetlany obce treści zewnętrzne. W języku HTML są tylko cztery takie elementy – Img, Iframe, Object i Embed. Dlatego nasz bohater sugeruje obecność zewnętrznego pliku, który zostanie załadowany do obszaru, którego rozmiar jest ustawiony za pomocą atrybutów tego tagu.

To. Element iframe to element ujścia, do którego ładowany jest obiekt zewnętrzny (taki jak wideo). Natomiast aby wskazać ścieżkę do tego pliku, który powinien zostać załadowany na stronę użyj specjalnego atrybutu Src. Ale w przeciwieństwie do Img, element iframe jest sparowany, tj. istnieje również znacznik zamykający:

Ten przykład pokazuje dane wyjściowe na stronie wideo YouTube przy użyciu ramki iframe. W celu ograniczenia obszaru ramki (okna), w którym będzie ładowany plik zewnętrzny, podawane są atrybuty Szerokość i wysokość, którego wartości podane są w pikselach:

Te. tag ten tworzy obszar, do którego ładowany jest jakiś obiekt zewnętrzny (nie ma znaczenia, czy pochodzi z Twojej witryny, czy z innego zasobu). Szerokość i wysokość obszaru określa się za pomocą opcji Szerokość i Wysokość, a atrybut Src określa ścieżkę do tego obiektu.

Element iframe odziedziczył wszystkie te atrybuty po podobnych tagach wbudowanych z zastąpioną treścią (takich jak wspomniany już Img). Cóż, on też wziął atrybuty ze zdjęć Hspace i Vspace, które pozwalają ustawić wcięcia od krawędzi ramki do tekstu, który ją otacza.

Znaczące jest również to, że wyrównywanie wbudowanej ramki odbywa się dokładnie w taki sam sposób, jak mogliśmy to zobaczyć studiując obrazy w HTML-u. Wszystkie takie same Wyrównywać, ale dla znacznika iframe z możliwymi wartościami: Dolny, Górny, Środkowy, Lewy i Prawy.

Ale ten element również przejął kilka atrybutów ze znacznika Frame z klasycznej struktury ramki, o czym szczegółowo porozmawiamy poniżej w tekście. Do atrybutów tych należy Nazwa, której wartość można wykorzystać jako wartość, dzięki czemu dokument, którego potrzebujesz po kliknięciu linku, otworzy się w oknie tej ramki (więcej informacji poniżej).

Również w iframe atrybut Frameborder został przeniesiony ze znacznika Frame, który ma tylko dwie wartości - 0 (ramka wokół ramki nie jest wyświetlana) lub 1 (ramka jest widoczna). Wartość domyślna to Frameborder=1, więc aby ją usunąć, musisz wpisać Frameborder="0":

Z Frame do tego elementu przeniesiono także atrybut Scrolling, który ma domyślną wartość Auto - paski przewijania w ramce będą pojawiać się w miarę potrzeb, gdy zawartość będzie większa niż rozmiar okna przeznaczonego do jej wyświetlenia.

Cóż, atrybuty Marginwidth i Marginheight również zostały przeniesione z elementu Frame. Zostaną one szczegółowo omówione poniżej w tekście, a w skrócie – pozwalają ustawić wcięcie na szerokość i wysokość od krawędzi ramki do treści, która się w niej znajduje.

Jak już wspomniałem, wyraźnym przykładem użycia ramki iframe jest:

Wstawiając element iframe bezpośrednio na stronę internetową, otrzymasz wynik wideo z YouTube. Dochodzimy do wniosku, że ten element jest skrzyżowaniem elementów inline z zastąpioną treścią i w istocie klasycznych ramek, o czym teraz porozmawiamy.

Ramki oparte na znacznikach Frame i Frameset - ich budowa

Zatem tworzenie klasycznej struktury ramki zaczyna się od tego, że zamiast otwierającego i zamykającego tagu Body, który zwykle powinien znajdować się w każdym dokumencie, napiszesz w kodzie HTML Zestaw ramek.

Zasadniczą kwestią jest to, że w tym przypadku nie można zastosować elementu Body - ani Body (w przypadku zwykłego dokumentu), ani Frameset (w przypadku tworzenia struktury ramki dokumentu):

Każda ramka, którą tworzymy wewnątrz głównej, tworzona jest przy użyciu osobnego elementu Rama. Znacznik ten jest pojedynczy i w nim ustalamy ścieżkę do dokumentu, który będzie wczytany do tego okna.

Trzecim elementem, którego jeszcze nie poruszyliśmy, jest Brak ramek. Jest sparowany i pozwala na wpisanie do środka tekstu, który zostanie przetworzony przez przeglądarkę i wyświetlony na stronie internetowej tylko wtedy, gdy ta sama przeglądarka (lub inne urządzenie wyświetlające) nie obsługuje ramek. Może się to zdarzyć na przykład, jeśli korzystasz z przeglądarki przeznaczonej na urządzenia mobilne.

Zwykle w Noframes dodają nie tylko informację o aktualnej sytuacji z niemożnością przetworzenia struktury ramek, ale także dodają możliwość przejścia na inne strony, na których można kontynuować pracę bez ich używania. Trudno powiedzieć o nim cokolwiek innego, więc kontynuujmy.

Okazuje się, że element Frameset zastosowany zamiast znacznika Body zajmuje całą przestrzeń przydzieloną na obszar podglądu, a wewnątrz tego obszaru zostaną utworzone ramki z wykorzystaniem poszczególnych elementów Frame. W związku z tym pojawia się pytanie - jak podzielić obszar widzenia pomiędzy osobne okna, czyli inaczej mówiąc, jak ustawić wielkość każdego z nich.

Odbywa się to poprzez dodanie odpowiednich atrybutów do elementu Frameset. Jest ich dwóch - Kolsy i wiersze. Cols ustawia podział dużego okna na pionowe ramki lub kolumny, a Rows pozwala na podzielenie go na poziome okna lub rzędy.

Tworzenie struktury opartej na zestawie ramek i jego atrybutach Cols i Rows

Wartości Cols i Rows znacznika Html Frameset to liczby oddzielone przecinkami (bez spacji). Liczby te wyznaczają proporcje okien, jakie chcemy w efekcie uzyskać. Zatem niezależnie od tego, ile liczb oddzielonych przecinkami zapiszemy w kolumnach lub wierszach, wynikiem będzie liczba klatek, które otrzymamy.

Przykładowo, korzystając z tego zapisu otrzymamy trzy pionowe kolumny, których szerokość będzie odpowiadać proporcjom 2:5:3.

Ponieważ ustaliliśmy proporcje dla trzech klatek, będziemy musieli uwzględnić trzy elementy Frame pomiędzy otwierającym i zamykającym znacznikiem Frameset, nawet bez określania dodatkowych atrybutów:

W rezultacie nasza struktura ramowa, składająca się z trzech pustych okien, będzie wyglądać następująco:

W tym przykładzie wielkość okna (Frame) ustalamy za pomocą wartości procentowych, które są pobierane z szerokości obszaru wyświetlania (tak jest w przypadku użycia Cols) lub z jego wysokości (Rzędy). Przy zmianie rzutni zachowana zostanie procentowa zależność pomiędzy rozmiarami ramek. Ale zamiast procentów możesz także użyć po prostu liczb, które będą znaczyć. Myślę, że i tutaj nie powinny pojawić się żadne trudności w zrozumieniu.

Ale istnieje również dość nietypowa opcja w oznaczeniach rozmiarów, która wygląda gwiazdka „*”. Co więcej, może to być po prostu „*” lub gwiazdka z liczbą na początku, na przykład „3*”. Sprytna rzecz, która bardzo przypomina procenty i polega na tym, że przestrzeń na Ramkę dzielimy proporcjonalnie.

Spójrzmy na przykład. Teraz podzielmy rzutnię na poziome rzędy za pomocą opcji Wiersze:

Co oznacza ten wpis? Cały dostępny nam w pionie obszar widzenia zostanie podzielony na trzy linie. Wysokość pierwszej zostanie przyjęta na 200 pikseli, druga na 500, ale trzecia linia zajmie całą pozostałą przestrzeń na wysokości, ponieważ Jako rozmiar zastosowano „*”.

Warto zauważyć, że wartości „*” i „1*” oznaczają to samo - całą pozostałą przestrzeń dzielimy na jedną i tę jedną część przekazujemy tej ramce (no, czyli całą pozostałą przestrzeń).

Ale spójrz, co się stanie, jeśli użyjesz wartości „*” z liczbą do podzielenia proporcjonalnie:

Jak myślisz, jakie będą wymiary Ramy w tym przypadku? Wiadomo, że druga linia na pewno będzie miała wysokość 100 pikseli. Ale jak pozostała przestrzeń zostanie podzielona na wysokość między trzecim a pierwszym rzędem?

Obliczenie jest dość proste - wystarczy dodać cztery (4*) do dwóch (2*) i podzielić przez ten mianownik (pamiętaj o ułamkach z programu szkolnego) dwa i cztery. Te. otrzymujemy, że pierwsza kolumna z ramą zajmie jedną trzecią pozostałej przestrzeni na wysokości, a trzecia kolumna zajmie dwie trzecie. Inaczej mówiąc, trzeci będzie dwa razy wyższy od pierwszego:

Możesz użyć wszystkich trzech sposobów określania rozmiaru okien ramowych w jednym atrybucie, na przykład:

W rezultacie otrzymamy pierwszą kolumnę Frame o szerokości dziesięciu procent całego dostępnego obszaru, drugą - 100 pikseli, a pozostałe trzy będą miały szerokość w proporcjach czterech, trzech i dwóch dziewiątych pozostała przestrzeń szerokości. Wszystko jest więc proste i jasne.

Jeśli chcesz podzielić okno główne nie tylko na ramki poziome i pionowe, ale np. na ich kombinacje, to możesz zastosować zagnieżdżoną strukturę elementów Frameset oddzielnie dla kolumn i osobno dla wierszy. Przykładowo, aby uzyskać konstrukcję pokazaną na zrzucie ekranu poniżej, wystarczy zastosować następującą konstrukcję:

Te. najpierw używamy „frameset cols =”20%,80%”„, aby podzielić całą dostępną przestrzeń na dwie kolumny w pionie i ustawić zawartość prawej kolumny za pomocą znacznika „frame”, ale zamiast dodawać element „frame” w lewej kolumnie otwieramy nowy „wiersze zestawu ramek =„10%,*””.

I za jego pomocą dzielimy prawą kolumnę na dwie linie z ramkami, których zawartość ustawiamy za pomocą dwóch znaczników „frame”, po czym zamykamy oba kontenery „frameset”. Wszystko jest proste i logiczne.

Określ ścieżkę w atrybucie Src elementu Frame

Ale wszyscy rozmawialiśmy o elemencie Frameset i jego atrybutach Cols i Rows, za pomocą których tworzymy strukturę i ustalamy ich rozmiary. Zastanówmy się teraz, jak wyświetlić niezbędne dokumenty w wymaganych ramkach i jak skonfigurować interakcję między ich oknami.

Jak zatem kontrolować wygląd tworzonych przez nas okien? Wszystko to zawarte jest w atrybutach tagu Frame. Pierwszą z nich, o której warto wspomnieć, jest Src. Widzieliśmy to już w tagu Img, kiedy patrzyliśmy na wstawianie obrazów do kodu HTML. Jego istota nie uległa zmianie i nadal pozwala na określenie ścieżki do dokumentu, który ma zostać wczytany do ramki.

Ścieżkę do dokumentu w Src można określić jako . Ścieżki względne są zwykle używane w przypadku dokumentu znajdującego się w Twoim własnym zasobie, ale ścieżki bezwzględne będą potrzebne, jeśli chcesz załadować dokument z innej witryny do okna ramki.

Jeżeli nie zostanie podany atrybut Src wskazujący ścieżkę do żądanego dokumentu, to do okna zostanie wczytany pusty dokument. Osobiście kiedyś zrobiłem coś podobnego dla swojego bloga (jako dodatkowy element nawigacyjny) i jednocześnie utworzyłem dla niego osobny folder na serwerze hostingowym i umieściłem tam nie tylko plik HTML o strukturze ramki (który nazwałem indeksem .html), ale także wszystkie ładowane do różnych okien dokumentów, a także pliki graficzne, które służyły jako tło.

Dlatego najłatwiej było mi użyć linków względnych w atrybucie Src tagu Frame:

Warto zauważyć, że jeśli zamienisz wszystkie linki podane w tym kodzie z względnych na bezwzględne (takie jak https://site/navigator/joomla.html) i otworzysz ten plik w przeglądarce, to zostaną załadowane dokumenty określone w ramce z mojego serwera, a podobny obraz zobaczysz w swojej przeglądarce. Co więcej, nie ma znaczenia, gdzie będzie się znajdował Twój plik ze strukturą ramki (index.html) - na Twoim komputerze czy na hostingu.

W przykładzie pokazanym na rysunku do okna lewej ramki ładowana jest strona z określonym menu, będącym menu zwykłym. Ale nie liczy się sposób, w jaki menu jest utworzone, ale to, co dzieje się po kliknięciu któregokolwiek z jego linków.

Jeśli to zrobisz, wszystko przebiegnie dokładnie tak, jak powinno - dokument otworzy się w prawym dolnym oknie. Ale do tego musiałem zastosować jeden mały trik, bo w wersji domyślnej dokument otwierał się na cały rozmiar okna, zastępując strukturę ramki, której w ogóle nie potrzebowałem, bo menu nawigacyjne w lewej i górnej ramce zniknął.

Jak otwierać dokumenty za pomocą łącza w ramce

Tak więc, gdy rozmawialiśmy o hiperłączach, wspomnieliśmy o atrybucie znacznika „A” jako Target=_blank. Czy pamiętasz do czego to służy? Prawidłowe jest otwarcie połączonego dokumentu w nowym oknie. Domyślnie powinien otwierać się w tym samym oknie, co jest odpowiednikiem target="_self".

Ale to są możliwości Cel nie są ograniczone. Okazuje się, że można do tego dodać wartość jako nazwa ramki, który jest wstępnie określony w specjalnym atrybucie Name znacznika Frame. Wtedy dokument poprzez ten link nie otworzy się w tym samym oknie, zajmując całą jego przestrzeń, ale w określonej przez Ciebie ramce. Jest jasne? Jeśli nie do końca, to stanie się to jasne teraz, gdy przeanalizujemy przykład.

Wróćmy więc do naszego przykładu pokazanego na rysunku tuż powyżej. Strony musimy otwierać za pomocą linków z lewego okna w prawej dolnej (dużej) ramce. Dlatego najpierw musisz nadać temu dużemu oknu nazwę, korzystając z atrybutu Name w znaczniku Frame.

Zrobili to i nazwali „ktona”. Teraz możesz bezpiecznie otworzyć plik, który jest ładowany jako menu w lewym oknie i dodać atrybut Target="ktona" do wszystkich znajdujących się w nim tagów A:

Historia Joomla i komponentu VirtueMart

Oczywiście za pomocą narzędzia szukaj i zamień nie będzie trudno umieścić je dla wszystkich hiperłączy, ale po co niepotrzebnie ładować kod, skoro mamy świetną okazję do wykorzystania specjalny znacznik podstawowy, o którym wspominaliśmy już w tym samym artykule o hiperłączach, kiedy rozmawialiśmy o użyciu Target blank.

Wystarczy umieścić bazowy element target="ktona" pomiędzy otwierającym i zamykającym tagiem Head, a wszystkie linki w kodzie HTML tego dokumentu otworzą nowe strony w określonej ramce zwanej "ktona":

Swoją drogą, jeśli weźmiemy pod uwagę moje kiedyś narzędzie jako przykład, to nadal musimy się upewnić, że wszystkie linki z górnego poziomego okna otwierają swoje strony w lewej pionowej ramce, która służy mi jako lewe menu. Co należy w tym celu zrobić?

Cóż, najpierw musisz nadać nazwę lewej pionowej ramce:

Natomiast w pliku, który ładuje się do górnego okna (gor.html) należy dodać podstawowy element target="gor":

To wszystko, teraz zrobiliśmy wszystko dobrze. Wszystkie dokumenty podążające za linkami z górnej ramki otwierają się w lewym oknie, a wszystkie linki z niej otwierają dokumenty w środkowej i największej ramce. Moim zdaniem wszystko jest proste i logiczne.

Atrybuty znacznika ramki umożliwiające dostosowanie wyglądu okien

Zobaczmy teraz, jakich atrybutów innych niż Src i Name można użyć w tagu Frame, aby dostosować wygląd ramek. Zacznijmy Przewijanie. Za jego pomocą możemy skonfigurować wyświetlanie pasków przewijania dla każdego okna Twojej struktury ramki osobno.

Przewijanie ma domyślną wartość Auto - przeglądarka automatycznie zdecyduje, na podstawie rozmiaru dokumentu załadowanego do ramki, czy wyświetlić pasek przewijania, czy nie. Jeżeli dokument nie mieści się całkowicie w oknie, pojawi się pasek przewijania, umożliwiający obejrzenie całości do końca.

Możesz także użyć wartości Tak (paski przewijania w oknie będą zawsze wyświetlane, nawet jeśli dokument w całości się w nim zmieści) i Nie (paski przewijania w ogóle nie pojawią się, nawet jeśli część dokumentu się nie zmieści) jako wartości dla przewijania.

W moim niegdyś istniejącym narzędziu użyłem domyślnej wartości Auto i paski przewijania w ramkach pojawiały się w razie potrzeby:

Następujący atrybut znacznika Frame to Noresize- jest pojedynczy (nie ma wartości). Rejestrując go, zabraniasz tym samym zmiany jego rozmiaru, co domyślnie odbywa się poprzez proste przeciągnięcie myszką krawędzi ramek.

Kiedy przesuniesz kursor myszy na granicę, zobaczysz, że kursor zmieni się w podwójną strzałkę i teraz, klikając lewym przyciskiem myszy, możesz przesuwać granicę według własnego uznania. Noresize zakazuje takiej samowoly (po przesunięciu kursora myszy do krawędzi okien nie będzie już widoczna dwukierunkowa strzałka).

Kolejnym atrybutem wizualnym jest Brzeg ramki. Za jego pomocą możesz określić, czy pomiędzy klatkami ma być rysowana ramka (granica), czy też nie. Obramowanie ramki może mieć tylko dwie możliwe wartości - 0 (nie rysuj ramki) lub 1 (pokaż ramkę). Wartość domyślna to oczywiście 1.

Jest jedna subtelność. Jeśli chcesz usunąć widoczną ramkę, będziesz musiał dodać Frameborder=0 do wszystkich znaczników Frame klatek, pomiędzy którymi chcesz usunąć widoczne ramki.

Cóż, nadal musimy rozważyć kilka atrybutów znacznika Frame - Szerokość marginesu i wysokość marginesu, które ustawiają szerokość dopełnienia (prawa i lewa) oraz wysokość (góra i dół) od krawędzi okna do załadowanej do niego treści (liczba oznacza liczbę pikseli dopełnienia):

Dlaczego nie można zrobić strony internetowej na ramkach?

Zobaczmy, jaka jest zasadnicza wada klasycznych struktur, która w zasadzie kładzie kres ich zastosowaniu przy tworzeniu strony internetowej. Polega ona na tym, że zgodnie z tą konstrukcją ramową nie da się śledzić jej stanu.

Złożone struktury mogą mieć tysiące różnych stanów (warianty dokumentów otwieranych w różnych oknach ramek), ale adres URL tej samej struktury nie ulega zmianie. Z tego powodu będzie Nie można używać zakładek przeglądarki lub wysyłaj linki do swoich ulubionych stron innym użytkownikom. Dlaczego?

Ponieważ adres pozostaje niezmieniony, a otwierając go z zakładek przeglądarki lub z wiadomości e-mail, otrzymasz stronę ze stanem początkowym struktury ramki, a nie stanem, który chciałbyś zapisać.

Choć oczywiście ten problem można rozwiązać, ale nie za pomocą narzędzi HTML, a za pomocą serwerów (na przykład Php) lub klienckich języków programowania (JavaScript), a te rozwiązania nie będą stuprocentowo skuteczne. Takie rozwiązania faktycznie pozwalają na dodanie dodatkowych danych o jego aktualnym stanie do adresu URL struktury ramki, ale nie jest to łatwe, a niezawodność nie będzie absolutna.

To pierwsza i bardzo istotna wada stosowania ramek do tworzenia stron internetowych, ale jest jeszcze jedna, ogromna wada. Wyszukiwarki oczywiście już dawno nauczyły się je indeksować i wydobywać z nich adresy dokumentów ładowanych do ich okien. Problem jest inny.

Kiedy użytkownik przejdzie z wyników wyszukiwania Yandex lub Google do Twojej witryny zbudowanej w oparciu o strukturę ramek, otworzy się tylko dokument, który został załadowany do jednej z ramek, a nie cała struktura. Czy rozumiesz o czym mówię?

Użytkownik zobaczy dokument i nie zobaczy nawigacji w Twojej witrynie, ponieważ będzie on chroniony w innych oknach, a są one wczytywane tylko jako część całej konstrukcji.

W rezultacie witryna zbudowana na ramkach staje się po prostu bezużyteczna. Chociaż znowu istnieją rozwiązania tego problemu w oparciu o skrypty serwerowe, gdy zostanie wykonane przekierowanie z adresów poszczególnych dokumentów do struktury ramek, która jest w pożądanym stanie, ale znowu jest to bardzo trudne i nie zawsze niezawodne.

Ogólnie rzecz biorąc, wniosek można wyciągnąć jednoznacznie - Nie ma potrzeby tworzenia stron internetowych na ramkach. Ale są stale używane do tworzenia pomocy dla różnych aplikacji i mogą się przydać w innych drobiazgach.

Na przykład stworzyłem strukturę ramek, którą nazwałem „Nawigatorem” (teraz została tymczasowo usunięta) i która stała się rodzajem rozszerzonego menu zewnętrznego mojego bloga, co moim zdaniem powinno uprościć pracę z zasobem i dlatego poprawić „bez bzdur” mają bardzo, bardzo silny wpływ na promocję witryny.

Jednak aby uniknąć problemów z wyszukiwarkami, zamknąłem całą strukturę ramki z widoku, a także na wszelki wypadek dodałem metatag Rodots do wszystkich jej plików HTML, zakazując ich indeksowania:

JOOMLA

Jednak wszystkie te ograniczenia dotyczą tylko struktur w znacznikach Frame i Frameset oraz osadzone ramki w tagach iframe nie mają żadnych widocznych wad, a można, a nawet należy je wykorzystać w swoich projektach, choćby do wstawiania filmów z YouTube.

Powodzenia! Do zobaczenia wkrótce na stronach bloga

Możesz być zainteresowany

Dyrektywy komentarzy i typ dokumentu w kodzie HTML, a także koncepcja elementów blokowych i wbudowanych (tagi)
Osadź i obiektuj - znaczniki HTML służące do wyświetlania treści multimedialnych (wideo, flash, audio) na stronach internetowych
Img - znacznik HTML służący do wstawiania obrazka (Src), wyrównywania i owijania wokół niego tekstu (align), a także ustawiania tła (background)
Co to jest hipertekstowy język znaczników Html i jak wyświetlić listę wszystkich tagów w walidatorze W3C Wybierz, Opcja, Obszar tekstowy, Etykieta, Zestaw pól, Legenda - Tagi HTML dla postaci list rozwijanych i pól tekstowych
Listy w kodzie HTML - znaczniki UL, OL, LI i DL
Czcionka (twarz, rozmiar i kolor), cytaty blokowe i znaczniki wstępne — starsze formatowanie tekstu w czystym formacie HTML (bez użycia CSS)
Jak ustawiane są kolory w kodzie HTML i CSS, wybór odcieni RGB w tabelach, dane wyjściowe Yandex i inne programy

Etykietka .

Składnia

Opcje

wyrównanie Określa sposób wyrównania ramki do krawędzi oraz sposób owijania tekstu wokół niej. obramowanie Ustawia, czy wyświetlać obramowanie wokół ramki, czy nie. wysokość Wysokość ramy. hspace Pozioma przestrzeń pomiędzy ramką a otaczającą treścią. nazwa Nazwa ramki. przewijanie Sposób wyświetlania paska przewijania w ramce. src Ścieżka do pliku, którego zawartość zostanie wczytana do ramki. vspace Pionowa przestrzeń od ramki do otaczającej treści. szerokość Szerokość ramki.

Zamykanie tagu

Wymagany.

Przykład 1: Użycie tagu


Opis parametrów tagu

Argumenty

absmiddle Wyrównuje środek ramki do środka bieżącej linii. baseline Wyrównuje ramkę do linii bazowej bieżącej linii. dół Wyrównuje dolną krawędź ramki z otaczającym ją tekstem. do lewej Wyrównuje ramkę do lewej krawędzi okna. środek Wyrównuje środek ramki do linii bazowej bieżącej linii. do prawej Wyrównuje ramkę do prawej krawędzi okna. texttop Górna krawędź ramki jest wyrównana z najwyższym elementem tekstowym w bieżącym wierszu. góra Górna krawędź ramki jest zrównana z najwyższym elementem bieżącej linii.

Najpopularniejsze opcje to lewy i prawy, które powodują zawijanie tekstu wokół ramki. Aby tekst nie przylegał ściśle do zawartości ramki, zaleca się umieszczenie tagu

Lorem ipsum dolor sit amet, consectetuer adipiscing elita...

Parametr FRAMEBORDER

Opis

Domyślnie wokół zawartości ramki rysowana jest ramka z efektem 3D. Aby to ukryć, użyj parametru ramki.

Składnia


Argumenty

tak (lub 1) Wyświetla obramowanie wokół ramki. no (lub 0) Ukrywa obramowanie wokół ramki.

Domyślna wartość

Przykład 3: Ukrywanie oryginalnej ramki wokół ramki





Znacznik IFRAME, parametr ramki




WYSOKOŚĆ i SZEROKOŚĆ

Opis

Aby zmienić rozmiar ramki za pomocą HTML, podawane są parametry szerokości i wysokości. Możesz używać wartości w pikselach lub procentach. Jeżeli ustawiony jest zapis procentowy, to wymiary ramki liczone są względem elementu nadrzędnego – kontenera, w którym znajduje się tag

Argumenty

Dowolna dodatnia liczba całkowita w pikselach lub procentach.

Domyślna wartość

szerokość - 300 pikseli, wysokość - 150 pikseli.

Przykład 4: Szerokość i wysokość ramy





Znacznik IFRAME, parametr szerokości




Parametr HSPACE i VSPACE

HTML: 3.2 4 XHTML: 1.0 1.1

Opis

Dla dowolnej ramki można ustawić niewidoczne wypełnienie poziome i pionowe, używając odpowiednio parametrów hspace i vspace. Jest to szczególnie prawdziwe, gdy tekst otacza zawartość ramki. W tym przypadku, aby tekst nie „ściskał” ściśle na brzeg ramki, należy wokół niego dodać pustą przestrzeń.

Składnia


Argumenty

Dowolna dodatnia liczba całkowita w pikselach.

Domyślna wartość

Przykład 5: Marginesy wokół ramki





Znacznik IFRAME, parametr hspace




Nazwa parametru

Opis

W zwykłym dokumencie HTML po kliknięciu łącza bieżący dokument w oknie przeglądarki zostaje zastąpiony nowym. Aby treść była kierowana do ramki, musi ona mieć unikalną nazwę, określoną atrybutem name. W tym przypadku podczas tworzenia linku do tagu musisz podać parametr docelowy, którego wartością jest nazwa ramki.

Składnia

Argumenty

Nazwa jest podawana przy użyciu zestawu znaków, w tym cyfr i liter. Odnosząc się do ramki po nazwie, użyj tej samej pisowni, co w parametrze name.

Domyślna wartość





Znacznik IFRAME, parametr nazwy


Czeburaszka

Krokodyl Gena

Szapoklak


Parametr PRZEWIJANIA

Opis

Jeśli zawartość ramki nie mieści się w wyznaczonych wymiarach, automatycznie pojawiają się paski przewijania umożliwiające przeglądanie informacji. W niektórych przypadkach paski przewijania zakłócają projekt strony internetowej, dlatego warto je wyłączyć. Aby sterować wyświetlaniem pasków przewijania, użyj parametru przewijania.

Składnia

Argumenty

auto Paski przewijania są dodawane przez przeglądarkę tylko wtedy, gdy jest to konieczne, gdy zawartość ramki przekracza jej widoczną część. nie Zapobiega wyświetlaniu pasków przewijania. tak Zawsze powoduje pojawienie się pasków przewijania, niezależnie od ilości informacji.

Domyślna wartość

Przykład 7: Ukrywanie pasków przewijania





Znacznik IFRAME, parametr przewijania




Parametr SRC

Opis

Określa adres pliku (URL), który zostanie załadowany do ramki. Może to być dokument HTML, obraz lub program serwera. Dopuszczalne jest użycie nie tylko ścieżki do pliku, ale także nazwy funkcji JavaScript zwracającej wartość.

Składnia

Argumenty

Wartością jest pełna lub względna ścieżka do pliku.

Domyślna wartość

Przykład 8. Ścieżka pliku





Znacznik IFRAME, parametr src




Tagi ramki

  • RAMKA określa właściwości pojedynczej ramki, na którą podzielone jest okno przeglądarki.
  • FRAMESET definiuje strukturę ramek strony internetowej. Ramki dzielą okno przeglądarki na osobne obszary, położone blisko siebie. Każdy z tych obszarów ładuje niezależną stronę internetową zdefiniowaną za pomocą znacznika FRAME.
  • IFRAME tworzy pływającą ramkę umieszczoną wewnątrz zwykłego dokumentu, umożliwia załadowanie dowolnych innych niezależnych dokumentów do obszaru o określonych rozmiarach.
  • W przeglądarce wyświetla się komunikat NOFRAMES, gdy nie obsługuje ona ramek i nie może ich interpretować. Przeglądarki współpracujące z ramkami całkowicie ignorują zawartość znacznika NOFRAMES.
  • Element

    Ramki

    Co to robi

    Główna różnica między