RTFM! статьи, советы, скрипты
::Заработок с помощью сайта ::JScript по-русски! ::Все русские мануалы::
МЕНЮ
О САЙТЕ
НОВОСТИ
СТАТЬИ
КНИГИ
АППЛЕТЫ
СВЯЗЬ

СЧЕТЧИКИ
Rambler's Top100
Рейтинг@Mail.ru
Яндекс цитирования

Небольшой FAQ по JavaScript

Автор: pauk Сайт: http://www.pauk2001.h1.ru/     Рейтинг: N/A из 7       <<НАЗАД
   
   Что такое Java, JavaScript и JScript?
   
   JavaScript и Java – два совершенно разных языка! Java – полноценный объектно ориентированный язык программирования, разработаннный Sun Microsystems. Ему нужны компиляторы и служебные файлы для функционирования. Программы, разработанные на JDK (Java Development Kit), могут работать как автономные прикладные программы, как апплеты в HTML страницах и, наконец, как Java-servlets - "добавки" к Javaservlet-ready серверам, которые инкапсулируются в веб-сервер и работают как бинарный создатель информации, унаследовавший необходимое от веб-сервера и добавивший что-либо своё.
   
   JavaScript был разработан Netscape. Он "родственник" Java, только содержит меньший и более простой, немного измененный, набор команд. Структура JavaScript и его синтаксис подобен Java, но JavaScript функционален только когда включен как часть HTML страницы (на это указывает и его название "ЯваСценарий"). Вы не можете разрабатывать автономные прикладные программы на JavaScript. Он может использоваться а) в виде сценария внутри HTML в броузере, совместимом с Netscape 2.0, и б) как сценарий, исполняемый поддерживающим такие сценарии сервером.
   
   JScript был "разработан" Microsoft. Функционально это тоже самое, что и JavaScript. Hазвания разные из-за того, что JavaScript был уже запатентован Netscape к тому времени, как Microsoft решила встроить в свой броузер поддержку JavaScript. Вторая причина в том, что JScript не полностью следует спецификации Netscape, и эти отличия дают немало радостных минут тем, кто заботится о поддержке всех клиентских агентов.
   
   Чтобы при наведении мышки на ссылку выдавался мой текст, а не "http://www.name.ru/..."?
   
   Очень просто:
   <a href="http://www.r-t-f-m.info"
   onMouseOver="window.status='мышка на ссылке';return true;"
   onMouseOut="window.status='мышка не на ссылке';return true;">
   ссылка</a>.
   
   Как сделать кнопку "Back"?
   
   <a href="javascript:history.back()">Hазад</a>
   Разумеется, что вместо текста легко можно вставить свою картинку.
   
   Как определить, что юзер открыл страницу не в кадре, и перевести его в кадр?
   
   Можно использовать скрипт, просто перенаправляющий на фреймсет, но гораздо грамотнее сделать так, чтобы пользователю не пришлось потом долго лазить по меню в поисках нужной странички.
   
   Пусть http://www.myserver.com/dir/frameset.html - это фреймсет, в котором есть
   два фрейма: menu.html - меню, main - рабочее окно для main.html, 1.html,
   2.html и т.д.
   
   В случае, если фреймсет и вызванная страничка лежат на одном сервере, то в
   <head> нужно вставить такой скрипт:
   
   <script language="JavaScript">
   <!--
   if (parent) if (parent.pathname!='/dir/frameset.html') {
    var framesetURL='/dir/frameset.html?main='+escape(self.location.href)
    if (history) {
   //проверяем, у нас JavaScript 1.1 или 1.0? В 1.0 объекта history нет,
   // и в скобках будет undefuned, что для if все равно, что false.
    self.location.replace(framesetURL)
   //этот метод из JS1.1 грамотнее, чем простой редирект, потому что
   //не засоряет history.
    } else self.location=framesetURL;
   }
   //-->
   </script>
   
   Если страничка и фреймсет лежат на разных серверах, скрипт должен быть таким:
   
   <script language="JavaScript">
   <!--
   if (parent) {
    var parentURL='';
    with (parent.location) parentURL=hostname+pathname;
    if (parentURL!='www.myserver.com/dir/frameset.html') {
    var framesetURL='http://www.myserver.com/dir/frameset.html?main='+
    escape(self.location.href)
    if (history) {
    self.location.replace(framesetURL)
    } else self.location=framesetURL;
   }
   //-->
   </script>
   
   Если у вас на сервере работает CGI, PHP, или ASP, то фреймсет должен
   обработать пришедший параметр $main и сформировать фреймсет.
   
   Если это невозможно (страничка лежит на халявном серваке), то во frameset.html
   в <head> нужно поставить:
   
   <script language="JavaScript">
   <!--
   function loadMain() {
   var mainPos=location.search.indexOf('main=')+5;
   if (mainPos>4) {
    var mainURL=location.search.substring(mainPos,location.search.length);
    if (mainURL.indexOf('&')>-1) {
    mainURL=mainURL.substring(0,mainURL.indexOf('&'))
    }
    mainURL=unescape(mainURL);
    if (history) {
    self.frames.main.location.replace(mainURL)
    } else self.frames.main.location=mainURL
   }
   }
   //-->
   </script>
   
   А в тег <frameset> нужно прописать параметр:
   onLoad="loadMain();"
   
   Тогда при внешней ссылке на 1.html или наборе в строке браузера
   http://www.myserver.com/dir/1.html откроется фреймсет, и в нужный фрейм
   автоматически загрузится 1.html.
   
   Как на JS при событии в одном из кадров поменять заголовок всего фреймсета? Хотелось бы, чтобы при смене страниц в заголовке окна броузера кроме названия сайта отображалось еще и наименование текущего раздела.
   
   <head>
   <script language="javascript">
   <!--
   function newTitle() {
   top.document.title="HОВЫЙ ЗАГОЛОВОК";
   }
   -->
   </script>
   </head>
   
   <body ONLOAD="newTitle();">
   
   К счастью, в правильных браузерах это не работает. Следуйте более стандартным решениям и перегружайте фреймсет.
   
   Как вставить музыку в html файл?
   
   <script language="javascript">
   <!--
    var Brwsr = window.navigator.appName
    if (Brwsr == "Microsoft Internet Explorer")
    { Cmd = "<BGSOUND SRC=music.mid>" }
    else { Cmd = "<EMBED SRC=music.mid HIDDEN=true>" }
    document.write( Cmd )
   //-->
   </script>
   
   Как определить разрешение у посетителя, и в зависимости от разрешения посылать на разные страницы?
   
   Как понятно из нижеприведенного сценария, это полумеры. Если вы понимаете, что такое HTML, то вы понимаете, что у вашего пользователя нет никакого экрана и нет никакого разрешения.
   
   <script language="javascript">
   <!--
    var height=0;
    var width=0;
   
    if (self.screen) // for NN4 and IE4
    {
    width = screen.width
    height = screen.height
    }
    else if (self.java) // for NN3 with enabled Java
    {
    var jkit = java.awt.Toolkit.getDefaultToolkit();
    var scrsize = jkit.getScreenSize();
    width = scrsize.width;
    height = scrsize.height;
    }
   
    if (width == 800 && height == 600)
    { location.href = "800x600.htm" }
    else if (width == 640 && height == 480)
    { location.href = "640x480.htm" }
    else
    { location.href = "unknown.htm" }
   //-->
   </script>
   
   Как вставить дату последнего обновления?
   
   
   <script language="JavaScript">
   document.write(document.lastModified)
   </script>
   Но не все серверы правильно поддерживают этот скрипт.
   
   Как сделать, чтобы при наведении мышки на картинку-ссылку, картинка изменилась?
   
   <head>
   <script language="javascript">
   <!--
   function ChangeImg() {
    if(document.images) {
    eval("document."+ChangeImg.arguments[0]+
    ".src=('"+ChangeImg.arguments[1]+"')");
    }
   }
   
   function preload() {
    if (document.images) {
    var imgsrc = preload.arguments;
    arr=new Array(imgsrc.length);
    for (var j=0; j<imgsrc.length; j++) {
    arr[j] = new Image;
    arr[j].src = imgsrc[j];
    }
    }
   }
   //-->
   </script>
   </head>
   
   <body onLoad="preload('over1.gif', 'over2.gif', 'overN.gif')">
   
   где overN.gif - картинка, которая должна показываться при наведении мышки.
   onLoad нужен для того, чтобы картинки подгружались сразу, а не в то время,
   когда навели мышку, так как на слабом канале эффекта сразу можно не заметить.
   
   <a href="1.htm" onMouseOver="ChangeImg('image1','over1.gif')"
    onMouseOut="ChangeImg('image1','out1.gif')"><img
   src="out1.gif" name="image1"></a>
   
   <a href="2.htm" onMouseOver="ChangeImg('image2','over2.gif')"
    onMouseOut="ChangeImg('image2','out2.gif')"><img
   src="out2.gif" name="image2"></a>
   
   <a href="N.htm" onMouseOver="ChangeImg('imageN','overN.gif')"
    onMouseOut="ChangeImg('imageN','outN.gif')"><img
   src="outN.gif" name="imageN"></a>
   
   в <img> "name" нужно для того, чтобы JS знал, какой картинке соответствует
   каждая ссылка.
   
   Как открыть по ссылке маленькое окошко нужного размера
   без панели инструментов, строки состояния и т.д.?
   
   Категорически не рекомендуется конструкция вида <a href="javascript:window.open()">
   
   Правильный код:
   <a href="page.html" target="_blank"
   onclick="window.open(this.href,this.target,'width=XXX,height=YYY,'+
   'location=no,toolbar=no,menubar=no,status=no');return false;">
   
   Этот код обеспечит корректное открытие нового окна с нужным URL даже при отключенных скриптах.
   
   Как сделать фотогалерею: чтобы в документе были маленькие картинки, а при нажатии на них открывались окошки с увеличенными картинками?
   
   <html>
   <head>
   <title>Фотогалерея</title>
   <script language="JavaScript">
   <!--
   function imgOpen(imgURL,imgWidth,imgHeight,Title) {
   var imgWndw=window.open('','_blank','width='+imgWidth+',height='+
    imgHeight+',toolbar=no,menubar=no,location=no,status=no,'+
    'resizable=yes,scrollbars=no');
   var imgTitle=(Title)?Title:imgURL+": "+imgWidth+'x'+imgHeight;
   with (imgWndw.document){
    open();
    write('<ht'+'ml><he'+'ad><ti'+'tle>'+imgTitle+'</ti'+'tle>'+
    '</he'+'ad><bo'+'dy leftmargin="0" topmargin="0" '+
    'rightmargin="0" bottommargin="0" marginwidth="0" '+
    'marginheight="0"><img src="'+imgURL+'" width="'+imgWidth+
    '" height="'+imgHeight+'" border="0" alt="'+imgTitle+
    '"></bo'+'dy></ht'+'ml>');
    close();
   }
   return false
   }
   //-->
   </script>
   </head>
   <body>
   ...
   <a href="disco.jpg" target="_blank" onClick="return
   imgOpen(this.href,400,300,'Я на дискотеке');"><img src="disco_small.gif"
   width="80" height="60" alt="Я на дискотеке - 200 Кбайт" border="0"></a>
   ...
   <a href="banja.jpg" target="_blank" onClick="return
   imgOpen(this.href,200,300,'Я в бане');"><img src="banja_small.gif" width="40"
   height="60" alt="Я в бане - 100 Кбайт" border="0"></a>
   ...
   </body>
   </html>
   
   Этот метод грамотно "работает" и при отключении скриптов: открывает просто новое окно браузера с нужной картинкой.
   
   Есть ли в JS функция, которая бы брала сценарий из внешнего файла?
   
   <script language="JavaScript" src="путь_к_сценарию"></script>
   
   Русифицированный MSIE 3.01 и, видимо, некоторые другие его родственники
   падают, встретив эту функцию. Правда, сейчас им вряд ли кто-то пользуется.
   
   Почему NN некорректно ведет себя с русской буквой "я" в сценариях?
   
   B яваскрипте не должно быть свободного знака 0xFF. Поэтому мы берем знаки, которые могут перекодироваться в 0xFF, и предваряем их обратным слешем. Если вы программировали на Си, такая запись вам знакома.
   
   Пример: кодировка OxFF во всех кодировках пишем
    1251 "я" "\я"
    КОИ-8 "Ъ" "\Ъ"
   
   Как убрать рамки вокруг ссылок?
   
   Hа это явление жалуются только пользователи MSIE. Оно и понятно. Вставьте в тег ссылки слова onFocus="this.blur()". Все те, кто привык, что курсор не пропадает с глаз долой, скажут вам много теплых и ласковых слов.
   
   Как сделать выпадающее меню ссылок?
   
   <body>
   <form action="/cgi-bin/redir.cgi" method="post">
   <select name="redirURL"
   onChange="location=this.options[this.selectedIndex].value;">
    <option value="http://www.aaa.com/">AAA</option>
    <option value="http://www.bbb.com/">BBB</option>
    <option value="http://www.ccc.com/">CCC</option>
   </select>
   <noscript><input type="submit" value="Перейти!"></noscript>
   </form>
   </body>
   
   Для тех, у кого отключены скрипты, создайте CGI для редиректа (/cgi-bin/redir.cgi), перенаправляющий клиента на нужную страницу.
   
   Можно ли сделать так, чтобы, не определяя браузер, тем не менее в зависимости от браузера, перейти на ту или иную страницу?
   
   А можно ли не учить языки сценариев, но создавать на них шедевры? :-)
   
   Тем не менее, подобие сделать можно!
   <SCRIPT language="VBScript">&lt--
   window.location="";
   //--></script>
   <SCRIPT language="JavaScript1.3">&lt--
   window.location="";
   //--></script>
   <SCRIPT language="JavaScript1.2">&lt--
   window.location="";
   //--></script>
   <SCRIPT language="LiveScript">&lt--
   window.location="";
   //--></script>
   Для браузеров, которые совсем не понимают скриптов, задайте в МЕТА-тэге число секунд до переадресации (3-5 хватит).
   
   Но стоит ли создавать такие страницы? Не легче ли подучить скрипты и HTML, чтобы сделать страницу поприличнее?
   
   Как сделать так, чтобы меню в левом фрейме и информация в правом прокручивались одновременно?
   
   Если у вас длинное меню, то на странице с фреймами работать будет неудобно. Забудьте о фреймах вообще - зачем они вам, если есть CSS и скрипты!
   
   
   
   
   
   
   
   


<<НАЗАД      ОЦЕНИТЬ СТАТЬЮ    ВЕРСИЯ ДЛЯ ПЕЧАТИ>>
Статья прочитана :  раз.




пейкюлю



 
 
 
 
 
pauk ©® 2000-2015. All rights reserved.
При перепечатке ссылка на сайт и указание обязательны.
Мнение администрации сайта не всегда совпадает с мнением автора.
Орфография и пунктуация - авторские.
Администрация не несет никакой ответственности за использование материалов.
.
Protected by Copyscape DMCA Takedown Notice Infringement Search Tool