www.romver.ru
/ Полный список статей / JavaScript: полезные функции

Как заказать сайт


АБРАКАДАБРА (Тоже самое но в читаемом виде)

Nemnogo specifi4eskaa stat'a i posva6ena ona re6eniu problem, voznikau6ix pri ispol'zovanii na sayte freymov. I, v 4astnosti, probleme indeksacii takix saytov poiskovimi robotami i formirovaniu freymovoy strukturi pri obra6enii k odnoy iz vnutrennix strani4ek.

V ob6em slu4ae ot primenenia freymov lu46e vsego vozderjat'sa. Opisanie voznikau6ix pri etom problem mojno nayti vot v etoy stat'e. Esli je primenenia freymov izbejat' ne udaetsa, to prixoditsa kak-to re6at' eti problemi. Vot etim mi sey4as i zaymemsa.

Podgotovka sayta k indeksacii

Na4nem s bolee prostogo - podgotovki sayta, ispol'zuu6ego freymi, k indeksacii poiskovimi robotami.

V 4em sut' problemi? Poiskovie roboti predstavlaut soboy special'nie programmi, kotorie umeut pute6estvovat' po ssilkam, na4inaa ot nekotoroy kornevoy stranici. Kogda Vi pitaetes' zanesti svou strani4ku v bazu dannix poiskovoy sistemi, Vas obi4no prosat vvesti adres glavnoy stranici sayta. I vot s etogo momenta robot stavit Va6 zapros v o4ered'. 4erez nekotoroe vrema on poydet po ukazannoy ssilke i t6atel'no proanaliziruet vsu strani4ku, vita6iv iz nee klu4evie slova, kratkoe opisanie i druguu poleznuu informaciu. Vse eto on zabotlivo soxranit v svoey baze dannix. Posle togo, kak glavnaa strani4ka budet proindeksirovana, robot poydet po ssilkam, kotorie na ney ukazani, i budet zanosit' v bazu vse vstre4au6iesa po puti strani4ki. Glubina indeksacii obi4no ograni4ivaetsa 3 urovnami ierarxii v predelax domena, na kotorom raspolojen sayt. 4to, v principe, pravil'no, ina4e indeksacia sayta nikogda bi ne podo6la k svoemu logi4eskomu zaver6eniu.

Takim obrazom indeksiruutsa obi4nie sayti, i tak kak na pervoy strani4ke obi4no est' ssilki na vse osnovnie razdeli sayta, to indeksacia proxodit uspe6no. V slu4ae s freymami vse ne tak. T.e. robot pitaetsa 4estno proindeksirovat' sayt po svoim pravilam, no u nego, k sojaleniu, ni4ego ne polu4aetsa. Esli Vi sozdavali strani4ki s ispol'zovaniem freymov, to znaete, 4to freymi opisivautsa v special'noy strani4ke-konteynere. I, kak pravilo, opisivautsa li6' freymi i formiruu6ie ix fayli. Nikakix ssilok vo vne6niy mir na etoy strani4ke poprostu net(!). I 4to je proisxodit? Robot naxodit takuu strani4ku, soxranaet ee v svoey baze i... dal'6e emu nekuda idti - on s4itaet, 4to rabota zakon4ena i perexodit k indeksacii sleduu6ego sayta. A mi polu4aem absolutno neproindeksirovanniy sayt! A zna4it, na6u strani4ku ne smogut nayti pri pomo6i poiskovix sistem!

Radi spravedlivosti sleduet zametit', 4to naibolee "prodvinutie" poiskovie sistemi uje pitautsa indeksirovat' sayti s freymami i uslojnaut svoi programmi-roboti.

Nu a kak je vse-taki podgotovit' sayt s freymami k pravil'noy indeksacii? Kak uje bilo skazano vi6e, problema zaklu4aetsa v otsutstvii na strani4ke-konteynere ssilok na osnovnie razdeli sayta. Zna4it, nam nujno prosto dobavit' eti ssilki samim. I, pomestim mi ix v sekcii <noframes></noframes>, kotoraa, kstati, special'no bila pridumana dla takix slu4aev. Zamet'te takje, 4to etot sposob pozvolaet nam sdelat' sayt dostupnim dla brouzerov, kotorie ne podderjivaut freymi.

A vot i primer korrektnogo koda, osu6estvlau6ego vse skazannoe vi6e:

<html>
<head>
<title>Primer dokumenta s freymami</title>
</head>

<frameset cols="180,*">
<frame src="menu.htm" name="menu">
<frame src="content.htm" name="content">
</frameset>

<noframes>
<a href="content.htm">Soderjanie sayta</a>
<a href="page_1.htm">Stranica #1</a>
<a href="page_2.htm">Stranica #2</a>
<a href="page_3.htm">Stranica #3</a>
</noframes>

</html>

V dannom fragmente a opustil opisanie META-tegov dla upro6enia izlojenia, no Vam budet neobxodimo ix dobavit' pered na4alom registracii sayta v poiskovix sistemax. Podrobnosti o tom, kak eto sdelat', Vi mojete nayti vot na etoy strani4ke.

Re6enie problemi s formirovaniem strukturi freymov

Nu, a teper' zaymemsa samoy slojnoy problemoy - formirovaniem freymovoy strukturi pri obra6enii k odnoy iz vnutrennix stranic sayta. Problema, v ob6em-to, zaklu4aetsa ne v formirovanii strukturi freymov, a v otobrajenii v odnom iz okon toy samoy zapro6ennoy pol'zovatelem strani4ki.

No davayte sna4ala rassmotrim istoki problemi. Kak ni stranno, oni svazani v osnovnom s poiskovimi sistemami - teper' uje ne v kontekste registracii, a neposredstvenno pri analize rezul'tatov poiska. Esli sayt verno proindeksirovan, to eto zna4it, 4to v baze est' "pasport" na lubuu strani4ku dannogo sayta, i, sledovatel'no, v rezul'tate zaprosa mi mojem polu4it' ssilku na odnu iz vnutrennix stranic. 6el4ok na ssilke, kak Vi dogadivaetes', otkroet nam tol'ko vnutrennuu strani4ku sayta bez vsakix freymov. I, zna4it, ves' kropotlivo sdelanniy dizayn nikto ne uvidit. Ladno dizayn, no ved' i dobrat'sa do drugix strani4ek sayta vozmojno budet li6' edinstvennim sposobom - redaktirovaniem soderjimogo adresnoy stroki.

Kak je etogo izbejat'? Vot sey4as i razberemsa. Dla na4ala rassmotrim prostie sposobi, kotorie pozvolat oboytis' nam bez primenenia JavaScript. V ob6em-to, sposob vsego odin, i zaklu4aetsa on v tom, 4to vnizu kajdoy strani4ki neobxodimo sdelat' ssilku na glavnuu stranicu sayta (kotoraa, kak Vi pomnite, odnovremenno avlaetsa i konteynerom). Etot nexitriy priem pozvolit posetitelam popast' v na4alo Va6ego sayta, ne pribegaa k uxi6reniam tipa redaktirovania adresnoy stroki. I, vpolne vozmojno, 4to on naydet na sayte i drugie poleznie materiali.

Ispol'zovanie je JavaScript daet nam v ruki gorazdo bolee mo6nie sredstva i pozvolaet polnost'u sformirovat' vsu freymovuu strukturu i otobrazit' strani4ku v odnom iz freymov.

A ne budu poka polnost'u privodit' ves' kod skripta, a dla na4ala rassmotru neskol'ko priemov, kajdiy iz kotorix delaet nujnoe nam delo. Na4nem s avtomati4eskogo perexoda na druguu strani4ku. Eto delaetsa pri pomo6i sleduu6ey konstrukcii:

<script language="JavaScript">
<!--
location.href="anotherpage.htm";
//-->
</script>

Svoystvo href ob&ekta location soderjit adres teku6ey stranici, kotoriy, kstati, mojno v luboy moment pro4itat'. I esli mi pri pomo6i skripta pomestim v etu peremennuu adres kakoy-libo drugoy strani4ki, to brouzer nemedlenno osu6estvit perexod.

Vtoroy priem - eto pereda4a skriptu parametrov pri pomo6i adresnoy stroki (tak nazivaemiy metod GET). Osu6estvlaetsa eto dobavleniem k adresu strani4ki znaka '?' (vopros) i pere4isleniem posle nego vsex neobxodimix peremennix i ix zna4eniy. Esli peremennix neskol'ko, to oni otdelautsa drug ot druga pri pomo6i znaka '&' (ampersand). Vot neskol'ko primerov pereda4i parametrov posredstvom metoda GET:

http://www.domain.com/page.htm?name=John&id=1986321
search.php?keyword=design&area=title&type=full
guestbook.asp?page=2

Vi navernaka videli podobnie konstrukcii na saytax internet-magazinov i pri zaprosax poiskovix sistem.

Dla na6ego slu4aa etot priem obozna4aet sleduu6ee - mi mojem peredat' glavnoy strani4ke, kotoraa formiruet freymi - adres strani4ki, na kotoruu popal pol'zovatel'. A uj na strani4ke-konteynere obrabotat' etot adres i sozdat' nujnie freymi.

Kod, kotoriy priveden nije, doljen bit' razme6en v na4ale kajdoy vnutrenney stranici, kotoraa vivoditsa vo freyme:

<script language="JavaScript">
<!--
location.href="index.htm?"+location.pathname;
//-->
</script>

Zamet'te, 4to konstrukcia neskol'ko slojnee, 4em a opisal vi6e. V ka4estve parametra adresa a ispol'zoval svoystvo pathname ob&ekta location, kotoroe soderjit polniy put' teku6ey strani4ki ot korna sayta (dla lubopitnix - location.href - soderjit absolutniy adres strani4ki, vklu4aa nazvanie protokola i ima domena).

Esli mi nemnogo podumaem, to poymem, 4to pered avtomati4eskim redirektom na novuu strani4ku neobxodimo proverit' - a ne otkrita li strani4ka vo freyme? Ina4e mi polu4im effekt beskone4nogo redirekta, kogda strani4ki budut vse vrema otkrivat'sa, poka komp'uter ne zavisnet vvidu nedostatka resursov. Okon4atel'niy kod doljen vigladet' vot tak:

<script language="JavaScript">
<!--
if (window.parent.frames.length == 0) {
location.href="index.htm?"+location.pathname;
}
//-->
</script>

T.e. mi 4itaem koli4estvo freymov na roditel'skoy strani4ke i esli eto zna4enie ravno nulu (t.e. roditela net), to mi osu6estvlaem perexod. V protivnom slu4ae strani4ka zagrujena vo freyme i neobxodimosti v redirekte net.

Xoro6o, mi peredali glavnoy strani4ke-konteyneru adres strani4ki, na kotoruu popal pol'zovatel', teper' neobxodimo sozdat' nujnuu freymovuu strukturu. Tak kak mi zaranee ne znaem, kakaa strani4ka budet vo vnutrennem freyme, to mi ne mojem napisat' kod dla organizacii freymov neposredstvenno. Eto pridetsa delat' pri pomo6i komand JavaScript:

<script language="JavaScript">
<!--
document.write('<frameset cols="180,*">');
document.write('<frame src="menu.htm" name="menu">');
document.write('<frame src="content.htm" name="content">');
document.write('</frameset>');
//-->
</script>

Sey4as mi slegka modificiruem etot skript, 4tobi v osnovnoy freym gruzilas' ne strani4ka po umol4aniu (content.htm), a na6a vnutrennaa strani4ka. No sna4ala pridetsa iz adresnoy stroki uznat', kakuu je strani4ku gruzit'.

Dla obrabotki peremennix, peredavaemix v adresnoy stroke, JavaScript nam predostavlaet svoystvo search ob&ekta location (pravo, o4en' udobniy ob&ekt - bez ego pomo6i mi ne smogli bi sdelat' to, 4to delaem :). Dannoe svoystvo xranit v sebe adres stroki zaprosa, kotoraa raspolagaetsa srazu posle znaka '?'. T.e. ono soderjit adres na6ey vnutrenney strani4ki (!). No ispol'zovat' eto zna4enie poka rano, t.k. stroka zaprosa soderjit i na4al'niy znak voprosa. Poetomu dla na4ala nam neobxodimo ego otrezat':

var string = location.search;
var current_page=string.substring (1, string.length);

A teper' a privedu polniy, modificirovanniy variant skripta:

<script language="JavaScript">
<!--

var string = location.search;
var current_page=string.substring (1, string.length);

document.write('<frameset cols="180,*">');
document.write('<frame src="menu.htm" name="menu">');
if (location.search == "") {
document.write('<frame src="content.htm" name="content">');
} else {
document.write('<frame src="' + current_page + '" name="content">');
}
document.write('</frameset>');
//-->
</script>

Krome formirovania freyma, v kotoriy budet gruzit'sa na6a strani4ka, 4to obespe4ivaetsa sleduu6im fragmentom:

document.write('<frame src="' + current_page + '" name="content">');

mi takje otslejivaem slu4ay zagruzki indeksnogo fayla, kogda emu ne peredan adres vnutrenney strani4ki (naprimer, pol'zovatel' srazu nabral glavniy adres sayta), i v etom slu4ae gruzim obi4nuu strani4ku po umol4aniu (content.htm).

Vot, v ob6em-to, i vse - mi spravilis' s problemoy vnutrennix stranic. Ostalos' tol'ko sdelat' neskol'ko zame4aniy i poasneniy.

Primenenie metoda GET dla pereda4i adresa vnutrenney strani4ki zatrudnaet ispol'zovanie drugix peremennix, kotorie mi takje xotim peredat' metodom GET. Dla realizacii takogo effekta skript e6e bolee uslojnitsa, t.k. pridetsa otslejivat' vse peremennie, kotorie mi peredaem, i, sootvetstvenno, formirovat' bolee slojnuu stro4ku dla redirekta. Krome togo, esli eti peremennie prednazna4autsa vnutrenney strani4ke, to podobniy mexanizm pereda4i zna4eniy peremennix pridetsa realizovat' i v indeksnom fayle pri formirovanii freymov.

Vnimatel'niy 4itatel' mojet zametit', 4to a ispol'zuu ne klassi4eskuu formu pereda4i parametrov (t.e. value=param), a sokra6ennuu - srazu peredavaa nujnoe zna4enie. Eto vozmojno v prostix skriptax i neskol'ko obleg4aet ix napisanie. Tem ne menee, takoy sposob ne pozvolaet nam peredavat' bolee odnoy peremennoy.

Osnovnoy indeksniy fayl mi formiruem pri pomo6i konstrukciy JavaScript. A 4to budet, esli na sayt zaydet 4elovek s brouzerom, kotoriy ne podderjivaet JavaScript? V etom slu4ae mi voob6e ni4ego ne uvidim, ved' sformirovat' freymi budet nekomu. Tak 4to dla razre6enia etoy problemi mi vospol'zuemsa tegami <noscript></noscript>, vnutri kotorix razmestim obi4noe opisanie freymov.

Pozvol', dorogoy 4itatel', a e6e raz polnost'u privedu kod indeksnoy strani4ki, v kotoroy u4teni vse eti neobxodimie melo4i i osobennosti:

<html>
<head>
<title>Primer dokumenta s freymami</title>
</head>

<script language="JavaScript">
<!--

var string = location.search;
var current_page=string.substring (1, string.length);

document.write('<frameset cols="180,*">');
document.write('<frame src="menu.htm" name="menu">');
if (location.search == "") {
document.write('<frame src="content.htm" name="content">');
} else {
document.write('<frame src="' + current_page + '" name="content">');
}
document.write('</frameset>');

//-->
</script>

<noscript>

<frameset cols="180,*">
<frame src="menu.htm" name="menu">
<frame src="content.htm" name="content">
</frameset>

<noframes>
<a href="content.htm">Soderjanie sayta</a>
<a href="page_1.htm">Stranica #1</a>
<a href="page_2.htm">Stranica #2</a>
<a href="page_3.htm">Stranica #3</a>
</noframes>

</noscript>

</html>

Kak postavit' ssilku na vnutrennuu strani4ku?

Ostalos' tol'ko odna problema. Ta samaa, 4to ukazana v zagolovke. Mexanizm formirovania freymovoy strukturi pri ssilke na vnutrennuu strani4ku mi uje razobrali, tak 4to problem so ssilkoy na vnutrennuu stranicu ne budet. A vot kak pol'zovatelu sdelat' zakladku na nujnoy strani4ke?

Samiy prostoy, no dostato4no effektivniy sposob - razme6at' v na4ale ili v konce strani4ki ssilku na strani4ku bez freymov. Razumeetsa, eto mojno delat' ne na vsex strani4kax, a li6' na tex, 4to predstavlaut samostoatel'niy interes - naprimer, stat'i. Kstati, mojno sovmestit' ssilku s versiey strani4ki dla pe4ati - budet o4en' uda4no.

A vtoroy sposob - opat' je ispol'zovanie JavaScript, no on, k sojaleniu, ograni4en tol'ko versiami Internet Explorer vi6e 5.0. Po krayney mere, poka. Danniy sposob dobavlenia strani4ki v izbrannoe a opisival ran'6e, poetomu ne budu zdes' povtorat'sa. Te, kogo eto zainteresovalo, mogut pro4itat' ob etom vot zdes'.

Kak vidite, preodolenie nedostatkov freymov process dostato4no xlopotniy i neintuitivniy. Tak 4to re6ayte sami - ispol'zovat' Vam freymi ili poiskat' drugie, bolee udobnie sposobi, kotorie re6at Va6i problemi.

Arxiv s primerami skriptov, rassmotrennix v dannoy stat'e, mojno vzat' otsuda. .citforum.ru/internet/webd/article_30.shtml
Mike Melnikov (cherry-design@mail.ru)
Web-studio "Cherry-Design"
3
Создание эксклюзивных сайтов, юзибилити анализ и бесплатный анализ под запросы основных поисковых машин
Контактная информация :
тел. +7(98I) 7608865

Написать письмо на e-mail
icq 415547094  romverрейтинг на mail.ru сайта romverinbox.ru
© 1997 - 2024 romver.ru

Полная карта сайта Display Pagerank