Поиск по этому блогу

HlpScrpt

JS

JavaScript (не путать с Java) - это высокоуровневый, динамический, многопарадигменный, объектно-ориентированный, основанный на прототипе, слабо типизированный язык, используемый как для клиентских, так и для серверных сценариев. Его основное использование заключается в рендеринге и выполнении манипуляций с веб-страницами.
см, подробее в http://qaru.site/questions/tagged/javascript

Внимание: JavaScript пишется только таким образом (слитно, J и S заглавные).




Этот же файл, от 2014 года


Содержание:

jQuery

JavaScript: Инструкция debugger
ERROR - Перехват ошибок, "try..catch"
Сервер сценариев Windows

Выражения и Операторы
Объекты
объект WINDOW
объект DOCUMENT

Встроенные объекты.
Объект Array
Объект Function
Методы, Функции

Определение геттеров и сеттеров
Встроенные функции.
Код свежих анекдотов для сайта.
СТАРТ - Как запустить скрипт в документе.
Табло, со звуком. Вычисления -
Рисунок. Изменить Цвет/Размер.
Дата и время. - вывод в форме
Устный счет
Формула Герона в скрипте
Написать число.
Всплывающее окно при входе на сайт.
Бегущая строка или картинка.
Форма Текстового ввода
Вставка адреса.
Сноски в тексте и Спойлер.
Пример скрипта - Запуск кнопкой.
Новые окна Браузера.
Запись в реестр.Стартовая страница, Браузера.
Новые.
INDEX


Учебники:


«Для тех, кто в танке»

по Web-дизайну(ч.1)

JS - учебник.

CSS - СТИЛИ, Таблица стилей.
    События Dinamic HTML - для запуска скрипта.
     Form



Примеры:

...на этой странице.
Страница с Горизонтальным меню. Для сайта.

Читай!!

https://puzzleweb.ru/javascript/12_functions.php

Строки - https://learn.javascript.ru/string#metody-i-svoystva


JavaScript: Инструкция debugger

Инструкция debugger представляет собою точку останова, устанавливаемую непосредственно в коде программы. Точка останова - это преднамеренное прерывание выполнения программы, в определённый момент с целью исследовать в отладчике состояние программы (передвижение по сценарию, просмотр стека вызовов, значения переменных и т. д.) и тем самым определить, правильно ли программа себя ведёт. Инструкция имеет следующий синтаксис:
debugger;
Инструкцию debugger можно устанавливать в любом месте исходного кода.

Работу инструкции debugger можно увидеть только, если в браузере имеется и запущен отладчик кода (например, консоль браузера). Поэтому, чтобы увидеть, как работает инструкция debugger, на уже открытой веб-странице нужно открыть консоль браузера и обновить страницу:

       var a = 1;
       var b = a;
       debugger;
       console.log(b);
       

JavaScript: Метки инструкций

В JavaScript любая инструкция может быть помечена предшествующим ей идентификатором, чтобы затем на неё можно было ссылаться. Такой идентификатор называется меткой инструкции. Синтаксис меток: метка: инструкция;

// Метку и инструкцию допускается размещать на разных строках
метка:
инструкция;

Несмотря на то, что пометить можно любую инструкцию, помечать имеет смысл только инструкции, имеющие тело.
Использовать метки можно только внутри тех инструкций, к которым они применяются. Метки работают только совместно с инструкциями break и continue. Имя метки указывается после инструкции
break или continue:

break имя_метки; continue имя_метки; С помощью меток можно явно указывать, к какому циклу или к какой другой инструкции они относятся. Пример работы инструкции break с меткой в составной инструкции: var x = 10; test: { x = 15; break test; x = 20; // Не выполнится } alert(x); // 15 Пространство имён для меток отличается от пространства имён для переменных и функций, поэтому в качестве меток допускается использовать идентификаторы, совпадающие с именами переменных или функций:
        var test = 10;
         
        test: {
          if (test == 10) break test;
          test = 25;
        }
         
        alert(test);   // 10

Вложенные инструкции не могут помечаться теми же идентификаторами, что и вмещающие их инструкции, но две независимые инструкции могут помечаться одинаковыми именами меток.

Любая инструкция может иметь множество меток, в этом случае метки просто указываются друг за другом:

     var x = 10;
      
     test1: test2: {
       if (x == 15) break test1;
       x = 20;
       if (x == 20) break test2;
       x = 25;
     }
     

alert(x); // 20
Обычно метки используются только при работе с вложенными циклами:
test:
 for (var i = 0; i < 5; i++) { 
  for (var j = 0; j < 5; j++) { 
  if (j == 3) break test; // Если переменная j равна 3, то завершаем 
  // итерацию внутреннего цикла 
  // и выходим из внешнего цикла 
  } 
 } 
 document.write("i: " + i + "<br>j: " + j); 
 



================================
-*-

jQuery


ПОДКЛЮЧЕНИЕ БИБЛИОТЕКИ JQUERY.
===
Скачать себе на комп - тут можно.

Способ 1. Идем по адресу и жмем большую желто-оранжевую кнопку Download jQuery. Переходим на страницу где выбираем версию jQuery. Желательно выбирать последнюю из доступных (на момент написания статьи - это 2.2.3). Обозначение compressed - означает, что библиотека минимизирована, т.е. занимаем минимум места, но, к сожалению, читать исходных код трудно.
Качаем! После сохранения подключаем файл библиотеки.
Для моей структуры (все скрипты лежат в папке js),
код выглядит следующим образом:


 <!DOCTYPE html> 
 <html lang="en"> 
 <head> 
   <meta charset="UTF-8"> 
   <title>Document</title> 
   <!--Подключаем библиотеку--> 
   <script src="js/jquery-2.2.3.min.js"></script> 
 </head> 
 <body> 
    
 </body> 
 </html> 

 


Способ 2. Подключаем напрямую с CDN.
Данный способ хорош тем, что библиотека подключается с сайта и не валяется на жестком диске. Особенно это актуально при большом количестве маленьких проектов и для обучения.

Для подключения рекомендую использоваться подключение от Google Developers, обычно я нахожу данную страницу по ссылке jquery google. Наша задача скопировать строку:

  
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"> 
 </script> 
  
 
и подключить ее в файл. Выглядит это так:

 <!DOCTYPE html> 
 <html lang="en"> 
 <head> 
   <meta charset="UTF-8"> 
   <title>Document</title> 
   <!--Подключаем библиотеку--> 
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
 </head> 
 <body> 
    
 </body> 
 </html> 

 

Второй способ подключения, перед закрывающимся тегом body:

 <!DOCTYPE html> 
 <html lang="en"> 
 <head> 
   <meta charset="UTF-8"> 
   <title>Document</title> 
 </head> 
 <body> 
    
   <!--Подключаем библиотеку--> 
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
 </body> 
 </html> 
 



Содержание:

  • Выражения и операторы.
  • Объекты
    ----- WINDOW
    ----- DOCUMENT
    ----- WshShell


  • Встроенные объекты.
    ----- String
    ----- Array
    ----- Boolean
    ----- Date
    ----- Function
    ----- Arguments
    ----- Math
    ----- Number

  • Методы, Функции
        this - описание и примеры.

  • Определение геттеров и сеттеров

  • Встроенные функции.


    ·СТАРТ - Как запустить скрипт из документа.
    ·Табло, со звуком. Вычисления -
    ·Рисунок. Изменить Цвет/Размер.
    ·Замена рисунка
    ·Дата и время. - вывод в форме
    ·Устный счет-Случайные числа.
    ·Формула Герона в скрипте
    ·Написать число.
    ·Бегущая строка.
    ·Форма - Текстового ввода
    ·Вставка адреса.
    ·Сноски в тексте и Спойлер.
    ·Примеры - .
    ·Запись в реестр. Новые окна Браузера.
    · Определить и показать тип и версию Браузера.



    Для сайтов начального уровня, чей бесплатный хостинг не дает, как правило, ни PHP, ни CGI.
    JavaScript почти незаменимое средство сделать сайт поживее, динамичнее..
    Визуальный редактор(IE)-переделка.

    Работу скрипта проверяй на HH.exe - другие браузеры не показывают код,ошибки.
    А просто не выполняют неправильный скрипт.



  • Объекты ( window / document / Date / form(массив forms) и др...)

       anchor (массив anchors) Applet Area Array button checkbox   
       массив elements FileUpload  frame(массив frames)  Function
       hidden history Image link(массив links) location Math radio
       mimeTypes navigator Option password Plugin массив plugins reset 
       select (массив options) string submit text textarea
          

  • Методы, Функции ( close (document) / close (window) и др. )
       
    abs acos alert anchor asin atan atan2 back big blink blur bold ceil charAt clearTimeout click confirm cos escape eval exp fixed floor focus fontcolor fontsize forward getDate getDay getHours getMinutes getMonth getSeconds getTime getTimezoneOffset getYear go indexOf isNaN italics javaEnabled join lastIndexOf link log max min open (document) open (window) parse parseFloat parseInt pow prompt random reload replace reset reverse round scroll select setDate setHours setMinutes setMonth setSeconds setTimeout setTime setYear sin small sort split sqrt strike sub submit substring sup taint tan toGMTString toLocaleString toLowerCase toString toUpperCase unescape untaint UTC write writeln

  • Открытие и закрытие окон

  • Операторы, которые используются в JavaScript:
         break comment  continue   for   for...in    function 
         if...else   return   var   while   with 
    


    !!! Осознай, что JS — объектно-ориентированный язык. ( в инете более подробнее см. ) И здесь подстерегают некоторые опасности, происходящие от непонимания того факта, что JS — язык не классов (как Pascal или C++ ), а прототипов...( читать далее в инете....)

    -*-

    Выражения и Операторы


    Справочник, по выражениям.
        A = (Условие)? a1: a2 
    Если условие истинно, то выражение A имеет значение a1,
    иначе имеет значение a2. Например,
    status = (age >= 18) ? "adult" : "minor"
    Это утверждение присваивает значение "adult" переменной status,
    если age равно 18 или больше чем 18.
    Иначе, приписывает значение "minor" переменной status.

    Словарь по скриптам,
    в файле - C:\Me\DIC\JS.dic
    для макро myQdic.s


     Числа- 0xD4 -16; 045 -8; 12879 -10
     если вне функ - glvar=6; - глоб.перем
     

     fuvar = 5; ИЛИ 
        так- var fuvar = 5; - локальная перем. внутри функ.
     

    Строки - "one line \n another line"
    число в стороку - Строку в число eval(N) - 1.0*N  Все инструкции программного кода заканчиваются точкой с запятой.
    Об этом надо помнить.


    ПОДРОБНЕЕ В ИНЕТЕ

    Методы

    основы языка - JS

    спавочник по JS

    Расширения для Хрома =
    https://chrome.google.com/webstore/category/home.

    Скрипты в теле ХТМЛ-

    Итак, для полноценной работы над страницами понадобятся:текстовый редактор, графический редактор, графический конвертер, конвертер для русских текстов, FTP-клиент, разные браузеры. Ну, и еще много чего по мелочам - таблица безопасных цветов, конвертор RGB ->HEX, TELNET-клиент и т.д

    Предположим мы хотим написать сценарий, который будет вычислять площадь треугольника по трем его сторонам.
    Для этого нам потребуется использовать формулу Герона:

     function areaOfTriangle(obj){
      var a=1*obj.st1.value;
      var b=1*obj.st2.value;
      var c=1*obj.st3.value;
      var p=(a+b+c)/2;
      var s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
      obj.res.value=s;
     }
     
     
    Здесь мы использовали объект Math и его метод sqrt для извлечения квадратного корня. Выражение, из которого извлекается корень, должно быть взято в скобки.<br>
    ------
    Дополнительные файлы -
    1. Формы - ПРИМЕРЫ
    2. Примеры из страниц ХТМЛ.txt
    В старых версиях IE встроенный отладчик бывает неудобен, а в IE<8 его вообще нет.
    Зато есть очень мощное универсальное средство:
    Visual Studio. Которое работает и с JavaScript.
    Есть два основных отладчика для IE, кроме встроенного:

    Microsoft Script Editor поставляется вместе с Microsoft Office. Есть бесплатная версия — это не то. Нужна именно та, которая в поставке (см.в инете)Microsoft Office***, причем она не ставится по умолчанию. Для установки нужно найти и включить соответствующий пункт в меню.
    После этого, при стандартных путях, редактор/отладчик Microsoft Script Editor(MSE) будет установлен в
    C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSE7.EXE.
    В javascript-коде поставить в нужное место оператор debugger. Например:
    1    ...
    2      var i = 5
    3      debugger;
    4      i++
    5     ...
    

    Когда выполнение дойдет до строки debugger — вызовется отладчик точно также, как в пункте 1. Этот способ, вообще говоря, входит в стандарт языка и работает со всеми отладчиками.
    Вызов отладчика этим способом осуществляется через окошко с выбором:
    -*-

    Объекты

    Объект - это самостоятельная единица,
    имеющая свойства и определенный тип.
    Сравним например с чашкой.
    У чашки есть цвет, форма, вес, и материал из которого она сделана и т.д.
    Точно так же, объекты JavaScript имеют свойства которые
    определяют их характеритики.

    Объект это набор свойств, и свойство состоит из имени и значения ассоциированного и с этим именем. Значением свойства может быть и функция, которую можно назвать методом объекта.
    -----
    В дополнение к встроенным в браузер объектам, вы можете опеределать свои собственные объекты.
    Объект Object создается с помощью выражения:
    var переменная =new Object([значение])
        Значением может быть любой тип данных: строка, число, булево значение.
        var myObj1 = new Object("Привет!"); // создаётся строка
        var myObj2 = new Object(7); // создаётся число
        var myObj3 = new Object(true); // создаётся булево значение
        Квадратные скобки в примере, как обычно, означают, 
        что оно может оставаться пустым (в реальном коде они не ставятся). 
        Пустому объекту впоследствии можно присвоить любое значение.
        var myObj4 = new Object();
        myObj4 = "Доброе утро!"
        // Значением нашего объекта стала строка "Доброе утро!".
        

    Свойства объекта Object есть и у всех остальных объектов JavaScript,
    поскольку они как дочерние объекты наследуют свойства родителя. Этих
    свойств два: constructor и prototype.

    В javascript определены некоторые стандартные объекты и функции.

     На самом верхнем уровне находится объект window,
    представляющий окно браузера и являющийся "родителем"
    всех остальных объектов.
    Пример - window.open - открывает новое окно браузера.
     
    или пример - window.external.AddFavorite( bookmarkurl, bookmarktitle ) - Добавить закладку в браузер


    Расположенные ниже могут иметь свои подчиненные объекты.
     
      1. Все объекты имеют методы (отделяются от объекта точкой), например:
    document.write
    позволяет писать текст в текущую страницу,
    document.write('<a href="javascript:addbookmark()"> Нажми и скрипт запустится.</a>')

    2. Также объекты имеют свойства, например:
     document.bgcolor содержит значение фонового цвета текущей страницы,
     document.title содержит заголовок страницы.


  • anchor (массив anchors)
  • Applet
  • Area
  • Array
  • button
  • checkbox
  • Date
  • document
  • массив elements
  • FileUpload
  • form(массив forms)
  • frame(массив frames)
  • Function
  • hidden
  • history
  • Image
  • link(массив links)
  • location
  • Math
  • mimeTypes
  • navigator
  • Option
  • password
  • Plugin
  • массив plugins
  • radio
  • reset
  • select (массив options)
  • string
  • submit
  • text
  • textarea








    -*-

    объект WINDOW


      Подробнее про window,

    Окна с сообщениями.

    window.open - открывает новое окно браузера.

    Пример:
    
     <A HREF="#nul" ONCLICK="window.open('j.htm','','Toolbar=1,Location=1,Directories=0,Status=0, 
    
     Menubar=0,Scrollbars=0,Resizable=0,Width=850,Height=400');">Новое окно.</A> 
    
    
    
    Показать файл Memo.htm в Новом ОКНе. 500х500 ОКНА ... в Браузере

    Закрыть.Удалить ОКНО.

    Любой из следующих примеров закрывает текущее окно:
     <a href="#nul" onclick="window.close()">
     
    <a href="#nul" onclick="self.close()">
    Пример: Показать Окно-подтверждение, на переход : *^* Код:
      <a href="#*" onClick="return window.confirm('Уходить по адресу #*')"><b>*^*</b></a><hr> 
     

    Пример:window.print() - Печать этого файла. Установки принтера
     <A HREF="#nul" ONCLICK="window.print()">Печать этого файла.</A>
     


    или пример - window.external.AddFavorite( bookmarkurl, bookmarktitle ) - Добавить закладку в браузер



    Пример: Переадресация на другую страницу БРАУЗЕРА

    Скрипт срабатывает автоматически и не спрашивает разрешения у пользователя.
    Допустим, через если (условие== 1), то перейти на страницу... разные
    Замените адрес http://www.softtime.ru на адрес страницы,
    куда необходимо сделать переадресацию.
    <script language="JavaScript"> 
      window.location.href = "http://www.softtime.ru"
    </script>
    

    Пример: Метод «Drag and Drop»

    Скрипт передвижения изображений в окне браузера
    с помошью мыши методом «Drag and Drop».
    Изображение, которое вы будете двигать должно находится в той же папке,
    что и сама страничка со скриптом.
    В примере изображение имеет имя - 100х100.jpg.
    см. File:"DragDrop.htm";

    Пример: Скрипт "Падающий снег"

    Устанавливается прозрачность снежинок или символов, оттенок цвета.
    Регулируются скорость падения, минимальный и максимальный размеры.
    Указывается расположение и ширина колонки в окне, в которой будет виден снег.
    Буквы или текст тоже красиво выглядит.

    Снежинки кружатся по собственным случайным законам. Процесс
    устойчив к прокрутке и изменению размеров окна. Чем меньше
    снежинок, тем меньше нагрузка процессора при просмотре окна.

    Пример: Скрипт «Добавить в избранное»
    <script language="JavaScript">
       var bookmarkurl="http://www.softtime.ru/"
       var bookmarktitle="IT-студия SoftTime"
    
       function addbookmark()
       {
        if (document.all)
          window.external.AddFavorite(bookmarkurl,bookmarktitle)
       }
       if (document.all)
       document.write('<a href="javascript:addbookmark()">
        Нажмите на ссылку, чтобы добавить этот сайт в закладки')
    </script>
    

    Пример: Выход.
     <script type="text/javascript"> 
       window.domReady.push(function() { 
         confirm_deletion('Вы действительно хотите выйти?', 'confirm_site_exit'); 
           }); 
     </script> 
     


    -*-

    объект DOCUMENT


    Как запустить скрипт в документе.

     
    <big><b>Подробнее про document</b></big></A>,<br /> <br />                       <b>if( document.all == 1)</b> - ДОК.Загрузился полностью<br /> <br /> <b>document.write</b> позволяет писать текст в текущую страницу,<br />  <br /> <b>document.bgcolor</b> содержит значение фонового цвета текущей страницы,<br /> <br /> <b>document.title</b> содержит заголовок страницы.<br /> <br /> <div id="zz1">    <table border="2"><tbody valign="top" bgcolor="#BCEBFC"><tr>    <td valign="middle">    Тут пишу  текст. <br />    Или вставляю HTML код. <br />  <a title="Закрыть" onclick="document.getElementById('zz1').style.display='none';">  <font color="Blue"><i>Закрыть</i></font></a>    </td>    </tr></tbody></table> </div>
    Объект text - в форме ввода.

    -*-

    Встроенные объекты.


    JavaScript предлагает для работы с различными типами данных ряд встроенных объектов, каждый из которых имеет свой собственный набор свойств и методов, доступных в коде JavaScript.


    -

    Объект String

    Беру отсюда:

    В JavaScript любые текстовые данные являются строками.
    и далее пробую сделать File:"C:\ME\Help\HlpJS001.htm";
    из него надо лишнее удалить - Вот он .

    ==============
    Имеються и Встроенные функции
    Объект String дает вам набор методов для работы с текстом.
    Для создания объекта String используется такой синтаксис:
    MyString = new String ( [значение] )
    где значение - необязательный параметр:
    текст, представляющий собой начальное значение строковой переменной.
    Если это число, оно сначала преобразуется в строковый формат.

    Цвета - Цвет в JS


    Объект Array

    Объект Array определяет метод создания массивов и способ работы с ними.
    Для создания нового массива используется такая конструкция:
    x=new ArrayO; // создание нового массива
    x=new Array(lO); //создание массива из 10 элементов
    // создание массива и одновременно заполнение его значениями
    x=new Array("Мурка", "Васька", "Толстопуз",."Барсик");
    Свойство            Описание
    length              Целое число с возможностью изменения, 
                        указывающее количество элементов массива
    
    Метод               Описание
    join ( [строка] )   Возвращает строку, содержащую все элементы массива, 
                        строка в скобках — необязательный разделитель
    
    reverse ()          Изменяет на обратный порядок следования элементов
    
    sort ([функция])    Сортирует массив; 
                        если в скобках указана функция — по результатам ее вычислени 
    
    
    -*-

    -

    Объект Boolean

    Объект Boolean предназначен для хранения простых значений типа да/нет,
    true/false. Чтобы создать новый объект типа Boolean, используется такой
    синтаксис:
    MyAnsver=new Boolean([ значение});
    Если значение равно 0, null, пропущено или является пустой строкой,
    новый объект будет иметь начальное значение false. Все другие значения
    этого аргумента, включая строку false, приведут к созданию объекта,
    имеющего значение true.
    Метод                Описание
    toStrlng()  Возвращает значение объекта как строку true или false
    valueOf()   Возвращает численное значение объекта
    
    -*-

    -

    Объект Date

    Объект Date поддерживает метод для работы с датами и временем в
    JavaScript. Новые экземпляры объектов Date создаются так:
    
    newDateObject = new Date([значение])
    
    Значение — необязательные установки даты и времени для нового объекта. 
    Если они не заданы, используются текущие дата и время. 
    
    Значение может иметь такой вид:
    
         миллисекунды — начиная с полуночи по Гринвичу 1 января 1970 года;
         год, месяц, день (например, 2014,0,6 — 6 января 2014);
         год, месяц, день, часы, минуты, секунды;
         месяц день, год,  часы:минуты:секунды (например, September 23,1997 08:25:30).
    
    
    
    Метод            Описание
    
    getDate ( )      Возвращает число месяца как целое числоот 1 до 31
    
    getDay ()        Возвращает день недели как целое число от 0 (воскресенье) до 6 (суббота)
    
    getHours ( )     Возвращает часы как целое от 0 до 23
    
    getMlnutes ( )   Возвращает минуты как целое от 0 до 59
    
    getMonthO        Возвращает месяц как целое от 0 (январь) до 1 1 (декабрь)
    
    getSeconds ( )   Возвращает секунды как целое от 0 до 59
    
    geTime ( )       Возвращает количество миллисекунд между 1 января 1970 года в 00:00:00 по Гринвичу и текущим объектом Date как целое число
    
    getTimeZoneOf f set ( ) Возвращает разницу в минутах между местным и гринвичским временем как целое число
    
    getYear ( )      Возвращает год без первых двух разрядов как целое число
    
    parse (дата)     Возвращает количество миллисекунд между 1 января 1970 года в 00:00:00 по Гринвичу датой (дата;
    
    setDate ( значение)      Устанавливает день месяца с помощью целого числа значение от 1 до 31
    
    setHours ( значение)     Устанавливает часы с помощью целого числа значение от 0 до 23
    
    setMinutes ( значение)
    Устанавливает минуты с помощью целого числа значение от 0 до 59
    
    setMonth ( значение)
              Устанавливает месяц с помощью целого числа значение от 0 до II
    
    setSeconds ( значение)
              Устанавливает секунды с помощью целого числа значение от 0 до 59
    
    setTime ( значение)
    Устанавливает значение объекта Date с помощью целого числа значение, 
      которое отражает количество миллисекунд между 1 января 1970 года в 00:00:00 по Гринвичу
    
    set Year ( значение)
    Устанавливает часы с помощью целого числа значение, большего 1900
    
    toGMTStringO
    Преобразует данные местного времени во время по Гринвичу и возвращает как строку
    
    toLocaleString ( )
    Преобразует время по Гринвичу в данные местного времени и возвращает как строку
    
    UTC( год, месяц)
    Возвращает количество миллисекунд между 1 января 1970 года в 00:00:00 по Гринвичу 
      и текущим объектом Date как целое число [, часы] [, минуты] [, секунды])
    
    





    -*-

    Объект Function

    Объект Function предоставляет механизм для компиляции кода JavaScript в виде функции. Новая функция создается так:
    functionName = new Function(аргумент1, аргумент2, ... код функции),

    где аргумент1, аргумент2 и т. д. — аргументы для создаваемого объекта Function, а код функции — строка, содержащая тело функции. Это может быть несколько выражений JavaScript, разделенных точкой с запятой.

    Свойство            Описание
    
    arguments [ ]       Ссылка на массив Arguments, содержащий аргументы вызванной функции
    caller              Определяет функцию, вызываемую объектом Function
    prototype           Предоставляет способ для добавления свойств объекту Function
    
    

    -*-

    -

    Объект Arguments

    Объект Arguments — список (массив) аргументов объекта Function.
    Свойство     Описание
    length       Целое число, определяющее количество аргументов, 
                 необходимых вызванной функции
    
    -*-

    -

    Объект Math

    В отличие от других глобальных объектов, Math не является конструктором.
    Все свойства и методы Math статичны.
         объект Math и его методы(из инета).
         Объект math работает с математическими функциями,
         а его методы можно использовать для вызова этих функций.
         Ниже представлены некоторые методы объекта math:
         
    -----------------------|-------------|----------------------- Методы | | | Свойства | | | Math.abs | Math.atan2 | Math.floor | Math.E Math.acos | Math.exp | Math.ceil | Math.LN2 Math.asin | Math.min | Math.sin | Math.LOG2E Math.atan | Math.random| Math.cos | Math.LOG10E | Math.sqrt | Math.tan | Math.PI | Math.log | Math.pow | Math.SQRT12 | Math.round | Math.max | Math.SQRT2 | | | Math.LN10 ---------------------------------------------------------------- abs абсолютное значение sin, cos, tan тригонометрические функции log натуральный логарифм exp экспонента pow показательная функци sqrt квадратный корень min наименьшее значение max наибольшее значение Math.round() - привычное округление, Math.floor() - округление строго в сторону меньшего числа Math.ceil() - округление строго в сторону большего числа
    Имеються и Встроенные функции
    Предоставляет набор свойств и методов для работы с математическими 
    константами и функциями. Для их использования нужна сначала ссылка на 
    объект Math, затем — на требуемые метод или свойство:
    
      
    MyArea= Math.PI * MyRadiuS * MyRadius;
    MyResult = Math.floor(MyNumber);
    X=Math.sin(6.28)
    Свойство Описание E Постоянная Эйлера LN10 Значение натурального логарифма числа 10 LN2 Значение натурального логарифма числа 2 LOG10E Значение десятичного логарифма экспоненты (числа е) LOG2E Значение двоичного логарифма экспоненты PI Значение постоянной п SORT1_2 Значение квадратного корня из '/2 SORT Значение квадратного корня из 2 Метод Описание Abs ( число) Возвращает модуль числа число acos ( число) Возвращает арккосинус числа число as in ( число) Возвращает арксинус числа число a tan ( число) Возвращает арктангенс числа число atan2 (x, у) Возвращает угол в полярных координатах точки ceil ( число) Округляет число вверх до ближайшего целого cos ( число) Возвращает косинус числа число ехр ( число) Возвращает экспоненту в степени число floor ( число) Округляет число вниз до ближайшего целого log ( число) Возвращает натуральный логарифм числа число max ( число1 , число1 ) Возвращает большее из чисел число1, число2 min ( число 1, число2) Возвращает меньшее из чисел число1, число2 pow ( число 1 . число2 ) Возвращает число1 в степени число2 sin ( число) Возвращает синус числа число sqrt (число) Возвращает квадратный корень из числа числе tan ( число) Возвращает тангенс числа число round ( число) Округляет число до ближайшего целого random ( ) Возвращает случайное число в диапазоне 0 и 1 Возвращает дробное число, равномерно распределённое в интервале от 0 до 1. Аргументов не имеет. Math.random() Примечание: Чтобы получить случайное целое число между нулём и другим максимальным значением, используйте следующую формулу: Math.round(Math.random() * n) - (n — верхнее целое число приемлемого диапазона.) Чтобы получить случайное любое число между нулём и другим максимальным значением, используйте следующую формулу: Math.random() * n - (n — верхнее число приемлемого диапазона.) Чтобы получить случайное целое число между единицей и другим максимальным значением, используйте следующую формулу: Math.floor(Math.random() * (-n)) % (-n) + n - (n — верхнее целое число приемлемого диапазона.) Чтобы получить случайное целое число в диапазоне, начинающемся с номера, отличного от нуля, используйте следующую формулу: Math.round(Math.random() * n) + m (m — самое низкое целое число приемлемого диапазона, n + m — верхнее число диапазона.) То есть, чтобы получить рэндом от 7 до 25, надо записать: Math.round(Math.random() * 18) + 7 Чтобы получить случайное любое число в диапазоне, начинающемся с номера, отличного от нуля, используйте следующую формулу: Math.random() * n + m (m — самое низкое число приемлемого диапазона, n + m — верхнее число диапазона.)
    -*-

    -

    Объект Number

    Объект Number предоставляет набор свойств, полезных при работе с числами.
    Свойство                      Описание
    MAX_VALUE     Максимальное численное значение в JavaScript (~1,79Е+308)
    MIN_VALUE     Минимальное численное значение в JavaScript (~2,22Е-308)
    NaN           Значение, не являющееся числом
    NEGATIVE_INFINITY    Минус бесконечность
    POSITIVE_INFINITY    Плюс бесконечность
    Метод                         Описание
    oString( [основание] )  - Преобразует число в десятичную систему  счисления. 
                              (или в число в системе по основанию основание,) и 
                              возвращает в виде строки
    valueof ( )  - Возвращает двоичное численное значениечисла
    





    -*-

    Методы, Функции


    Определение геттеров и сеттеров.


     Методы (отделяются от объекта точкой), например:

     document.write позволяет писать текст в текущую страницу,



  • abs
  • acos
  • alert
  • anchor
  • asin
  • atan
  • atan2
  • back
  • big
  • blink
  • blur
  • bold
  • ceil
  • charAt
  • clearTimeout
  • click
  • close (document)
  • close (window)
  • confirm
  • cos
  • escape
  • eval
  • exp
  • fixed
  • floor
  • focus
  • fontcolor
  • fontsize
  • forward
  • getDate
  • getDay
  • getHours
  • getMinutes
  • getMonth
  • getSeconds
  • getTime
  • getTimezoneOffset
  • getYear
  • go
  • indexOf
  • isNaN
  • italics
  • javaEnabled
  • join
  • lastIndexOf
  • link
  • log
  • max
  • min
  • open (document)
  • open (window)
  • parse
  • parseFloat
  • parseInt
  • pow
  • prompt
  • random
  • reload
  • replace
  • reset
  • reverse
  • round
  • scroll
  • select
  • setDate
  • setHours
  • setMinutes
  • setMonth
  • setSeconds
  • setTimeout
  • setTime
  • setYear
  • sin
  • small
  • sort
  • split
  • sqrt
  • strike
  • sub
  • submit
  • substring
  • sup
  • taint
  • tan
  • toGMTString
  • toLocaleString
  • toLowerCase
  • toString
  • toUpperCase
  • unescape
  • untaint
  • UTC
  • write
  • writeln

    -*-


    В JavaScript есть специальное слово, this, которое можно
    использовать внутри метода, чтобы ссылаться на текущий объект.

    Пример 1:
    Подсказка будет только после клика.
    alert to the opportunity
    <A ONCLICK="this.title='ожидающий удобного случая'">alert to the opportunity</a>

    Пример 2:Увеличение картинки при наведении курсора -
     <img width="25" height="25" src="100х100.jpg"  
         title="Увеличение"onmouseover="this.width=100;this.height=100"  
                onmouseout="this.width=25;this.height=25">  
              
    Пример 3: Наведи мышку
     <b onmouseout="this.style.color='black'" onmouseover="this.style.color='red'">Пример 3: Наведи мышку</b></a>     

    Пример 4:
    Например, предположим у вас есть функция называемая validate, которая
    проверяет свойство объекта value, переданного ей, и если не соблюдены
    условия, то табло об ошибке:
      <script language="javascript">
      function validate(obj, lowval, hival) {
      if ((obj.value < lowval) || (obj.value > hival))
        alert("Число должно быть от 5-ти до 10-ти !");
      }
      </script>
      
    Вводи число -
      <input type="text" name="age" size="10" 
        onChange="validate(this, 5, 10)">
    Когда вызывается validate в каждой из форм в
    обработчике события onchange,
    используется this, чтобы передать этот элемент.
    Обрати внимание - значение в поле сохраняется при перезагрузки страницы!

    В общем, this ссылается на объект вызвавший метод.

    Значение this в JavaScript не зависит от объекта,
    в котором создана функция. Оно определяется во время вызова.
    - для ссылки на объект.

    Пример 4: применения this для FORM
    - указываею но то что функции
    "местные", "здешние" - применяются к полям этой формы (объекта).
    Отметьте правильные адреса электронной почты-
    Петров@mail.ru
    ivanov_s@inbox.ru
    ptr@mail.ru
    kta_an#mail.ru
    user@com
    _sacha@rambler.ru
    -*-

    Определение геттеров и сеттеров

    См. в инете -- Определение геттеров и сеттеров
     Геттер (от англ. get получить - это метод которые получает значениме  определенного свойства.

    Сеттер (от англ. set - присвоить) - это метод который  присваивает значение определенному свойству объекта.

    Можно определить геттеры и сеттеры для любых из встроенных или определенных объектов,  которые поддерживают добавление новых свойств.
    Синтаксис определения геттеров  и сеттеров пользуется синтаксисом литеральных объектов.
     
      Следующая сессия в JS шеле иллюстрирует как геттеры и сеттеры работают с объектом o определенным пользователем. JS шелл это приложение которое позволяет разработчику тестировать код JavaScript интерактивно или выполнить группу инструкций.1
     9 js> var o = {a: 7, get b() {return this.a + 1;}, set c(x) {this.a = x / 2}};
     [object Object]
     js> o.a;
     7
     js> o.b;
     8
     js> o.c = 50;
     js> o.a;
     25
     
     
     Свойства объекта o это:
     o.a — число
     o.b — геттер который возвращает o.a плюс 1
     o.c — сеттер который присваивает значение o.a половине значения которое передано o.c
     
    -*-

    Встроенные функции.

    В JavaScript существует набор встроенных функций, доступных при выполнении кода:
    
    escape (символ)      Возвращает строку в виде % XX , где XX —код ASCII символа в скобках
    
    eval (выражение)     Возвращает результат вычисления выражения в скобках
    
    isNaN (значение)     Возвращает True, если значение в скобках не является числом
    
    parseFloat (строка)  Преобразует строку в число с плавающей запятой
    
    typeOf (объект)      Возвращает тип указанного объекта как строку, 
                                например boolean, function и т. д.
    
    parselnt (строка, основание)  Преобразует строку в целое число в 
                                         системе счисления с указанным основанием
    

    ERROR - Перехват ошибок, "try..catch"

    Или, как их иначе называют, «исключительные ситуации» (исключения).
    Обычно скрипт при ошибке, как говорят, «падает», с выводом ошибки в консоль.
    Но бывают случаи, когда нам хотелось бы как-то контролировать ситуацию, чтобы скрипт не просто «упал», а сделал что-то разумное.
    Для этого в JavaScript есть замечательная конструкция - try..catch
    Она состоит из двух основных блоков: try, и затем catch:
             try {
             
               // код ...
             
             } catch (err) {
             
               // обработка ошибки
             
             }
    
    try..catch подразумевает, что код синтаксически верен. Если грубо нарушена структура кода, например не закрыта фигурная скобка или
    где-то стоит лишняя запятая, то никакой try..catch здесь не поможет. Такие ошибки называются синтаксическими, интерпретатор не может понять такой код.


    Работает она так: Выполняется код внутри блока try.

    Если в нём ошибок нет, то блок catch(err) игнорируется, то есть выполнение доходит до конца try и потом прыгает через catch.

    Если в нём возникнет ошибка, то выполнение try на ней прерывается, и управление прыгает в начало блока catch(err).

    При этом переменная err (можно выбрать и другое название) будет содержать объект ошибки с подробной информацией о произошедшем.

    Таким образом, при ошибке в try скрипт не «падает», и мы получаем возможность обработать ошибку внутри catch.


    ==

    Посмотрим это на примерах.

    Пример без ошибок:
    при запуске сработают alert (1) и (2):
        try {
       
          alert('Начало блока try');  // (1) <--  // .. код без ошибок 
         
          alert('Конец блока try');   // (2) <-- 
         
        } catch(e) { 
         
          alert('Блок catch не получит управление, так как нет ошибок'); // (3) 
         
        } 
         
        alert("Потом код продолжит выполнение..."); 
     
    Пример с ошибкой: при запуске сработают (1) и (3):
      try { 
      
       alert('Начало блока try');  // (1) <-- 
      
       lalala; // ошибка, переменная не определена! 
      
       alert('Конец блока try');  // (2) 
      
     } catch(e) { 
    
      alert('Ошибка ' + e.name + ":" + e.message + "\n" + e.stack); // (3) <--
    
      }
    
      alert("Потом код продолжит выполнение...");
     

    Здесь же мы рассматриваем ошибки семантические, то есть происходящие в корректном коде, в процессе выполнения.

    try..catch работает только в синхронном коде Ошибку, которая произойдёт в коде, запланированном «на будущее», например в setTimeout, try..catch не поймает:

     try {
      setTimeout(function() {
        throw new Error(); // вылетит в консоль
      }, 1000);
    } catch (e) {
      alert( "не сработает" );
    }
    

    На момент запуска функции, назначенной через setTimeout, этот код уже завершится, интерпретатор выйдет из блока try..catch.

    Чтобы поймать ошибку внутри функции из setTimeout, и try..catch должен быть в той же функции.


    Объект ошибки

    В примере выше мы видим объект ошибки. У него есть три основных свойства:
    name - Тип ошибки.
    Например, при обращении к несуществующей переменной:
    "ReferenceError".

    message - Текстовое сообщение о деталях ошибки.

    stack - Везде, кроме IE8-, есть также свойство stack,
    которое содержит строку с информацией о последовательности вызовов, которая привела к ошибке.


    В зависимости от браузера у него могут быть и дополнительные свойства, см. Error в MDN и Error в MSDN.


    Пример использования

    В JavaScript есть встроенный метод JSON.parse(str), который используется для чтения JavaScript-объектов (и не только) из строки.

    Обычно он используется для того, чтобы обрабатывать данные, полученные по сети, с сервера или из другого источника.

    Мы получаем их и вызываем метод JSON.parse, вот так:

    var data = '{"name":"Вася", "age": 30}'; // строка с данными, полученная с 
                                             // сервера
    var user = JSON.parse(data); // преобразовали строку в объект
    // теперь user -- это JS-объект с данными из строки
    alert( user.name ); // Вася
    alert( user.age );  // 30
    

    Более детально формат JSON разобран в главе Формат JSON, метод toJSON.

    В случае, если данные некорректны, JSON.parse генерирует ошибку, то есть скрипт «упадёт».

    Устроит ли нас такое поведение? Конечно нет!

    Получается, что если вдруг что-то не так с данными, то посетитель никогда (если, конечно, не откроет консоль) об этом не узнает.

    А люди очень-очень не любят, когда что-то «просто падает», без всякого объявления об ошибке.

    Бывают ситуации, когда без try..catch не обойтись, это - одна из таких.

    Используем try..catch, чтобы обработать некорректный ответ:

     var data = "Has Error"; // в данных ошибка
     try {
       var user = JSON.parse(data); // <-- ошибка при выполнении 
       alert( user.name ); // не сработает 
    
    } catch (e) {
      // ...выполнится catch
      alert( "Извините, в данных ошибка, мы попробуем получить их ещё раз" );
      alert( e.name );
      alert( e.message );
    }
    

    Здесь в alert только выводится сообщение, но область применения гораздо шире:
    можно повторять запрос, можно предлагать посетителю использовать альтернативный способ, можно отсылать информацию об ошибке на сервер… Свобода действий.


    Генерация своих ошибок

    Представим на минуту, что данные являются корректным JSON… Но в этом объекте нет нужного свойства name:

    
    var data = '{ "age": 30 }'; // данные неполны
    try {
      
       var user = JSON.parse(data); // <-- выполнится без ошибок 
       alert( user.name ); // undefined 
    
    } catch (e) {
      // не выполнится
      alert( "Извините, в данных ошибка" );
    }
    
    
    Вызов JSON.parse выполнится без ошибок, но ошибка в данных есть. И, так как свойство name обязательно должно быть, то для нас это такие же некорректные данные, как и "Has Error".
    Для того, чтобы унифицировать и объединить обработку ошибок парсинга и ошибок в структуре, мы воспользуемся оператором throw.

    Оператор throw

    Оператор throw генерирует ошибку.
    Синтаксис: throw <объект ошибки>;.

    Технически в качестве объекта ошибки можно передать что угодно, это может быть даже не объект, а число или строка, но всё же лучше, чтобы это был объект, желательно - совместимый со стандартным, то есть чтобы у него были как минимум свойства name и message.

    В качестве конструктора ошибок можно использовать встроенный конструктор: new Error(message) или любой другой.

    В JavaScript встроен ряд конструкторов для стандартных ошибок: SyntaxError, ReferenceError, RangeError и некоторые другие. Можно использовать и их, но только чтобы не было путаницы.

    В данном случае мы используем конструктор new SyntaxError(message). Он создаёт ошибку того же типа, что и JSON.parse.

    
    var data = '{ "age": 30 }'; // данные неполны
    try {
       var user = JSON.parse(data); // <-- выполнится без ошибок 
      if (!user.name) {
        throw new SyntaxError("Данные некорректны");
      }
      alert( user.name );
    } catch (e) {
      alert( "Извините, в данных ошибка" );
    }
    
    

    Получилось, что блок catch - единое место для обработки ошибок во всех случаях: когда ошибка выявляется при JSON.parse или позже.

    Проброс исключения

    В коде выше мы предусмотрели обработку ошибок, которые возникают при некорректных данных. Но может ли быть так, что возникнет какая-то другая ошибка?

    Конечно, может! Код - это вообще мешок с ошибками, бывает даже так, что библиотеку выкладывают в открытый доступ, она там 10 лет лежит, её смотрят миллионы людей и на 11-й год находятся опаснейшие ошибки. Такова жизнь, таковы люди.

    Блок catch в нашем примере предназначен для обработки ошибок, возникающих при некорректных данных. Если же в него попала какая-то другая ошибка, то вывод сообщения о «некорректных данных» будет дезинформацией посетителя.

    Ошибку, о которой catch не знает, он не должен обрабатывать.

    Такая техника называется «проброс исключения»: в catch(e) мы анализируем объект ошибки, и если он нам не подходит, то делаем throw e.

    При этом ошибка «выпадает» из try..catch наружу. Далее она может быть поймана либо внешним блоком try..catch (если есть), либо «повалит» скрипт.


    В примере ниже catch обрабатывает только ошибки SyntaxError, а остальные - выбрасывает дальше:
    var data = '{ "name": "Вася", "age": 30 }'; // данные корректны
    try {
      var user = JSON.parse(data);
      if (!user.name) {
        throw new SyntaxError("Ошибка в данных");
      }
      blabla();           // произошла непредусмотренная ошибка
      alert( user.name );
    } catch (e) {
      if (e.name == "SyntaxError") {
        alert( "Извините, в данных ошибка" );
      } else {
        throw e;
      }
    }
    

    Заметим, что ошибка, которая возникла внутри блока catch, «выпадает» наружу, как если бы была в обычном коде.

    В следующем примере такие ошибки обрабатываются ещё одним, «более внешним» try..catch:
    function readData() {
      var data = '{ "name": "Вася", "age": 30 }';
    
      try {
        // ...
        blabla(); // ошибка!
      } catch (e) {
        // ...
        if (e.name != 'SyntaxError') {
          throw e; // пробрасываем
        }
      }
    }
    
    try {
      readData();
    } catch (e) {
      alert( "Поймал во внешнем catch: " + e ); // ловим
    }
    

    В примере выше try..catch внутри readData умеет обрабатывать только SyntaxError, а внешний - все ошибки.

    Без внешнего проброшенная ошибка «вывалилась» бы в консоль с остановкой скрипта.


    Оборачивание исключений

    И, для полноты картины - последняя, самая продвинутая техника по работе с ошибками. Она, впрочем, является стандартной практикой во многих объектно-ориентированных языках.

    Цель функции readData в примере выше - прочитать данные. При чтении могут возникать разные ошибки, не только SyntaxError, но и, возможно, к примеру URIError (неправильное применение функций работы с URI) да и другие.

    Код, который вызвал readData, хотел бы иметь либо результат, либо информацию об ошибке.

    При этом очень важным является вопрос: обязан ли этот внешний код знать о всевозможных типах ошибок, которые могут возникать при чтении данных, и уметь перехватывать их?

    Обычно внешний код хотел бы работать «на уровень выше», и получать либо результат, либо «ошибку чтения данных», при этом какая именно ошибка произошла - ему неважно. Ну, или, если будет важно, то хотелось бы иметь возможность это узнать, но обычно не требуется.

    Это важнейший общий подход к проектированию - каждый участок функционала должен получать информацию на том уровне, который ему необходим.

    Мы его видим везде в грамотно построенном коде, но не всегда отдаём себе в этом отчёт.

    В данном случае, если при чтении данных происходит ошибка, то мы будем генерировать её в виде объекта ReadError, с соответствующим сообщением. А «исходную» ошибку на всякий случай тоже сохраним, присвоим в свойство cause (англ. - причина).

    Выглядит это так:

    function ReadError(message, cause) {
      this.message = message;
      this.cause = cause;
      this.name = 'ReadError';
      this.stack = cause.stack;
    }
    
    function readData() {
      var data = '{ bad data }';
    
      try {
        // ...
        JSON.parse(data);
        // ...
      } catch (e) {
        // ...
        if (e.name == 'URIError') {
          throw new ReadError("Ошибка в URI", e);
        } else if (e.name == 'SyntaxError') {
          throw new ReadError("Синтаксическая ошибка в данных", e);
        } else {
          throw e; // пробрасываем
        }
      }
    }
    
    try {
      readData();
    } catch (e) {
      if (e.name == 'ReadError') {
        alert( e.message );
        alert( e.cause ); // оригинальная ошибка-причина
      } else {
        throw e;
      }
    }
    

    Этот подход называют «оборачиванием» исключения, поскольку мы берём ошибки «более низкого уровня» и «заворачиваем» их в ReadError, которая соответствует текущей задаче.

    Секция finally

    Конструкция try..catch может содержать ещё один блок: finally.

    Выглядит этот расширенный синтаксис так:
    try {
       .. пробуем выполнить код ..
    } catch(e) {
       .. перехватываем исключение ..
    } finally {
       .. выполняем всегда ..
    }
    

    Секция finally не обязательна, но если она есть, то она выполняется всегда:

    *) после блока try, если ошибок не было,
    *) после catch, если они были.

    Попробуйте запустить такой код:
     try {
      alert( 'try' );
      if (confirm('Сгенерировать ошибку?')) BAD_CODE();
    } catch (e) {
      alert( 'catch' );
    } finally {
      alert( 'finally' );
    }
    

    У него два варианта работы:
    1) Если вы ответите на вопрос «сгенерировать ошибку?» утвердительно,
    то try -> catch -> finally.
    2) Если ответите отрицательно, то try -> finally.

    Секцию finally используют, чтобы завершить начатые операции при любом варианте развития событий.

    Например, мы хотим подсчитать время на выполнение функции sum(n), которая должна возвратить сумму чисел от 1 до n и работает рекурсивно:


    function sum(n) {
      return n ? (n + sum(n - 1)) : 0;
    }
    var n = +prompt('Введите n?', 100);
    var start = new Date();
    try {
      var result = sum(n);
    } catch (e) {
      result = 0;
    } finally {
      var diff = new Date() - start;
    }
    alert( result ? result : 'была ошибка' );
    alert( "Выполнение заняло " + diff );
    

    Здесь секция finally гарантирует, что время будет подсчитано в любых ситуациях: при ошибке в sum или без неё.
    Вы можете проверить это, запустив код с указанием n=100 - будет без ошибки, finally выполнится после try, а затем с n=100000 - будет ошибка из-за слишком глубокой рекурсии, управление прыгнет в finally после catch.

    finally и return
    Блок finally срабатывает при любом выходе из try..catch, в том числе и return.

    В примере ниже из try происходит return, но finally получает управление до того, как контроль возвращается во внешний код.

    function func() {
      try {
        // сразу вернуть значение
        return 1;
    
      } catch (e) {
        /* ... */
      } finally {
        alert( 'finally' );
      }
    }
    alert( func() ); // сначала finally, потом 1
    

    Если внутри try были начаты какие-то процессы, которые нужно завершить по окончании работы, то в finally это обязательно будет сделано.

    Кстати, для таких случаев иногда используют try..finally вообще без catch:

    function func() {
      try {
        return 1;
      } finally {
        alert( 'Вызов завершён' );
      }
    }
    alert( func() ); // сначала finally, потом 1
    

    В примере выше try..finally вообще не обрабатывает ошибки. Задача в другом: выполнить код при любом выходе из try - с ошибкой ли, без ошибок или через return.



    Последняя надежда: window.onerror

    Допустим, ошибка произошла вне блока try..catch или выпала из try..catch наружу, во внешний код. Скрипт упал.

    Можно ли как-то узнать о том, что произошло? Да, конечно.

    В браузере существует специальное свойство window.onerror, если в него записать функцию, то она выполнится и получит в аргументах сообщение ошибки, текущий URL и номер строки, откуда «выпала» ошибка.

    Необходимо лишь позаботиться, чтобы функция была назначена заранее.

    Например:
     <script> 
      window.onerror = function(message, url, lineNumber) { 
      alert("Поймана ошибка, выпавшая в глобальную область!\n" + 
      "Сообщение: " + message + "\n(" + url + ":" + lineNumber + ")"); 
      }; 
      
      function readData() { 
      error(); // ой, что-то не так 
      } 
      readData(); 
     </script> 
     

    Как правило, роль window.onerror заключается не в том, чтобы оживить скрипт - скорее всего, это уже невозможно, а в том, чтобы отослать сообщение об ошибке на сервер, где разработчики о ней узнают.

    Существуют даже специальные веб-сервисы, которые предоставляют скрипты для отлова и аналитики таких ошибок, например: https://errorception.com/ или
    http://www.muscula.com/.

    Итого
    Обработка ошибок - большая и важная тема.

    В JavaScript для этого предусмотрены:
    Конструкция try..catch..finally - она позволяет обработать произвольные ошибки в блоке кода.

    Это удобно в тех случаях, когда проще сделать действие и потом разбираться с результатом, чем долго и нудно проверять, не упадёт ли чего.

    Кроме того, иногда проверить просто невозможно, например JSON.parse(str) не позволяет «проверить» формат строки перед разбором. В этом случае блок try..catch необходим.

    Полный вид конструкции:

       try {
          .. пробуем выполнить код ..
       } catch(e) {
          .. перехватываем исключение ..
       } finally {
          .. выполняем всегда ..
       }
    
    Возможны также варианты try..catch или try..finally.

    Оператор throw err генерирует свою ошибку, в качестве err рекомендуется использовать объекты, совместимые с встроенным типом Error, содержащие свойства message и name.

    Кроме того, мы рассмотрели некоторые важные приёмы:

    Проброс исключения - catch(err) должен обрабатывать только те ошибки, которые мы рассчитываем в нём увидеть,
    остальные - пробрасывать дальше через throw err.

    Определить, нужная ли это ошибка, можно, например, по свойству name.

    Оборачивание исключений - функция, в процессе работы которой возможны различные виды ошибок, может «обернуть их» в одну общую ошибку, специфичную для её задачи, и уже её пробросить дальше. Чтобы при необходимости можно было подробно определить, что произошло, исходную ошибку обычно присваивают в свойство этой, общей. Обычно это нужно для логирования.

    В window.onerror можно присвоить функцию, которая выполнится при любой «выпавшей» из скрипта ошибке.
    Как правило, это используют в информационных целях, например отправляют информацию об ошибке на специальный сервис.

    Задачи


    Finally или просто код?
    важность: 5
    Сравните два фрагмента кода.
    Первый использует finally для выполнения кода по выходу из try..catch:

       try {
         начать работу
         работать
       } catch (e) {
         обработать ошибку
       } finally {
         финализация: завершить работу
       }
    
    Второй фрагмент просто ставит очистку ресурсов за try..catch:

         try {
           начать работу
         } catch (e) {
           обработать ошибку
         }              
    



    -*-

    Сервер сценариев Windows

    - (WSH) позволяет сценариям выполняться непосредственно в Windows, дважды щелкните файл сценария или введите имя файла сценария в командной строке.
    Как Microsoft Internet Explorer сервер сценариев Windows служит в качестве контроллера ActiveX обработчиков сценариев.

    WSH имеет очень много памяти и является идеальным средством для интерактивный и неинтерактивный потребности в написании сценариев (например, сценарий входа в систему и сценарий администрирования). Для запуска сценариев с помощью сервера сценариев для Windows (Wscript.exe)


    ВВЕДЕНИЕ В СЕРВЕР СЦЕНАРИЕВ WINDOWS

    В командной строке введите wscript.exe и нажмите клавишу ВВОД.
    Свойства сценария узла и нажмите кнопку ОК.
    В проводнике Windows или окне Мой компьютер дважды щелкните файл сценария,
    который требуется выполнить.


    1) Есть в реестре такой раздел (создать его, если вдруг нету) 
       HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings
    и в нем параметр "Enabled" (тип REG_SZ). 
    Значение параметра должно быть равно единице, 
    чтобы сервер сценариев был доступен. 
    
    
    Общие сведения о сервере сценариев Windows в Windows
       support.microsoft.com/kb/232211/ru?
    Сервера сценариев Windows (WSH) разрешает выполнение сценариев 
    непосредственно в Windows, дважды щелкнув файл сценария или введите имя 
    ...
    Сервер сценариев WINDOWS - Волшебный форум
       dev.mista.ru/topic.php?id=283976?
    
    - при установке программы выдает : отключен доступ к серверу сценариев 
    WINDOWS. что это такое? и как этот самый доступ включить ...
    
    -*-

    Код свежих анекдотов для сайта.


     Код для вставки свежих анекдотов на сайт: 
     <p style="text-align: center;"> 
     <script language="JavaScript" type="text/javascript" src="http://
     www.prikolnianekdot.ru/0_joke/insert20.js"></script> 
     <script type="text/javascript">// <![CDATA[ 
     document.write(text) 
     // ]]></script> 
     </p> 
     
    -*-

    СТАРТ - Как запустить скрипт в документе.


    Удалить
          <a href="delete.php" onclick="return confirm('Вы уверены?');">Удалить</a>       

    Пример 1: -
     <script language="javascript">
     function TTTT(){ 
        return 'ФУНКЦИЯ'; 
     }
     document.write( 'Это пишет ' + TTTT() + ', согласен? <br>');
     </script> 
     

    или так - Пример 2 - не сразу выполняется,
      <script language="JavaScript">
       if (document.all) 
          document.write('<a href="JavaScript:TTTT()">Нажми и скрипт запустится в новом окне.</a><br>') 
      </script>
     

    -*-

    Табло, со звуком. Вычисления -



    -*-

    Рисунок. Изменить Цвет/Размер.

    Идея - пишем функции,

    Пример 1: Мышкой указал-цвет поменял, как пример скрипта...


     <h4 onmouseout="this.style.color='black'" onmouseover="this.style.color='red'">Пример 1: Мышкой указал-цвет поменял, как пример скрипта...</h4> 
    

    Пример 2: Установи мышку на

    Заголовок

    ...двигай...



    Пример на выбор показа изображения

    Выберите изображение:
    F-15 Орел
    F-15 Орел 2
    АХ -64 Apache




    Пример 3: Оживить рисунок или кнопку. ( Не работает в ХРОМЕ! )


    Нет рисунка.

    Пример 4:

    Замена рисунка, после наведения на него мышкой.

    Заголовок 1

    Page 1 Page 2

    Заголовок 2

    Когда указатель мыши оказывается над одним из рисунков, он заменяется. Но для каждого объекта можно использовать и по три рисунка.

    Увеличение картинки при наведении курсора
           <img width="47" height="46" src="" title="Увеличение" 
               onmouseover="this.width=64;this.height=64" 
               onmouseout="this.width=47;this.height=46"> 
               
    при увеличении картинки - сдвигается весь контент страницы.
    Для устранения этой проблемы существует простое ("оригинальное") решение.
    Создать таблицу и создать в ней ячейку,
    которая будет чуть больше увеличенной картинки, и,
    собственно, загрузить в эту ячейку нужную картинку
                     <table border="1" cellspacing="4" cellpadding="12"> 
                     <tr><td  align="center" width="78" height="102" > 
                     <img  width="47" height="46" src="" title="Увеличение" 
                     onmouseover="this.width=74;this.height=74" 
                     onmouseout="this.width=47;this.height=46"></td></tr></table> 
                     
    Замена картинок, одного размера, при наведения курсора
           <img width="47" height="46" src="1" title="Увеличение" 
               onmouseover="this.src='2'" 
               onmouseout="this.src='1'"> 
               


    -*-

    Дата и время. - вывод в форме


    Пример библиотеки -
    Библ. лежит тут -
    https://code-live.ru/media/upload/files/2014/08/25/rus_clock_1.js
    скопировал себе в
    d:\kHelp\HTML_JS\RussClock.js
                     var clock = new RussianWordClock(new Date());
                     // выведет время в устном формате
                     document.body.innerHTML = clock.toString();
                     

    Расчет Даты пасхи - см. на стр. блога.


    Надо в начале указать <BODY onload=Timer1()>


    Полный формат даты:
    Текущее время:

    Вывод даты в строку -
    Или так - (из инета.) -
    <script type="text/javascript" src="http://xn--80aafl0ai9f.com/imrld/idata.js"> </script>
    

    Что мне известно о получении даты, с компа.
    В разных браузерах по разному отображаеться.










    Использование таймера

     Запуск функции через время:
     <script type="text/JavaScript"> 
     setTimeout('Timer1()',2000);
     </script> 
     
     Скачки по меткам на странице:
     <script type="text/JavaScript"> 
     setTimeout("location.href = '#nn';", 10000); 
     setTimeout("location.href = '#dd';", 20000); 
     </script> 
    

    -*-

    Устный счет

    ПРИМЕР

    Приведенный здесь пример содержит датчик случайных чисел (функции init и rand), таблицу, реализующую функции кнопок клавиатуры, и блок проверки результата вычислений. После загрузки программы пользователь должен выбрать тип вычислений (+,-), интервал вычислений (в пределах 10, 20, 100) и нажать кнопку "?" для генерации примера. После ввода с отображаемой клавиатуры числа пользователь нажимает на символ "=", что означает "исполнить", и система проверяет правильность ответа. Если ответ правильный, то программа поздравляет фразой "Молодец!", если нет - "Думай!?". В системе Windows 3.x нет встроенного датчика случайных чисел, поэтому стандартная функция rand в этой версии JavaScript не реализована.

    Используемый в данной программе датчик был позаимствован из телеконференции по JavaScript. В скрипте кроме этого используются объект типа "дата" и его методы, а также встроенные функции контроля вводимых данных.

    Как видно из примера обращение к полям HTML-формы представляет из себя обращение к структуре, корнем которой являетс объект окно, в котором определен объект документ, внутри которого определена форма и ее поля и атрибуты полей. Не у всех полей можно менять значения атрибутов, так, например, атрибут VALUE в кнопке не меняет своего значения, если только не перезагрузить страницу





    -*-

    Формула Герона в скрипте


    Вычисление площади любого треугольника по трем его сторонам. Эта формула содержится в «Метрике» Герона Александрийского (I века н. э.) и названа в его честь. Она является частным случаем определителя Кэли — Менгера для вычисления гиперобъёма симплекса. Герона относят к величайшим инженерам за всю историю человечества. Он первым изобрёл автоматические двери, автоматический театр кукол, автомат для продаж, скорострельный самозаряжающийся арбалет, паровую турбину, автоматические декорации, прибор для измерения протяжённости дорог (древний одометр) и др. Первым начал создавать программируемые устройства (вал со штырьками с намотанной на него верёвкой).


    a =
    b =
    c =
    S =






    -*-

    Написать число.


    <script language="javascript">
     function inpu(F) {
      // печатает в отдельном окне. А как в этом печатать?  
      document.write( F + ', правильно? <br>');
     }
    </script>
    <br>
    <INPUT NAME="vv" TYPE=button VALUE="Запуск функции" onClick="inpu('6')">
    

    -*-

    Всплывающее окно при входе на сайт.

    Вставляем код в позицию баннера
     <div id="parent_popup"> 
     <div id="popup"> 
     Тут пишем  ваш текст. 
     Или вставляем HTML код. 
     <a class="close"title="Закрыть" onclick="document.getElementById('parent_popup').style.display='none';"></a> 
     </div> 
     </div> 
      
     <script type="text/javascript"> 
                     var delay_popup = 5000; 
                     setTimeout("document.getElementById('parent_popup').style.display='block'", delay_popup); 
     </script> 
     И добавляем стили CSS - Если нет доступа к CSS то вставляем код вместо троеточия <style type="text/css">   ...  </style> и получившееся вставляем вместе с кодом выше. 
      
     #parent_popup { 
       background-color: rgba(0, 0, 0, 0.8); 
       display: none; 
       position: fixed; 
       z-index: 99999; 
       top: 0; 
       right: 0; 
       bottom: 0; 
       left: 0; 
     } 
     #popup { 
       background: #fff; 
       width: 520px; 
       margin: 10% auto; 
       padding: 5px 20px 13px 20px; 
       border: 10px solid #ddd; 
       position: relative; 
       /*--CSS3 Тени для Блока--*/ 
       -webkit-box-shadow: 0px 0px 20px #000; 
       -moz-box-shadow: 0px 0px 20px #000; 
       box-shadow: 0px 0px 20px #000; 
       /*--CSS3 Скругленные углы--*/ 
       -webkit-border-radius: 15px; 
       -moz-border-radius: 15px; 
        border-radius: 15px; 
     } 
     .close { 
         background-color: rgba(0, 0, 0, 0.8); 
         border: 2px solid #ccc; 
         height: 24px; 
         line-height: 24px; 
         position: absolute; 
         right: -24px; 
         cursor: pointer; 
         font-weight: bold; 
         text-align: center; 
         text-decoration: none; 
         color: rgba(255, 255, 255, 0.9); 
         font-size: 14px; 
         text-shadow: 0 -1px rgba(0, 0, 0, 0.9); 
         top: -24px; 
         width: 24px; 
         -webkit-border-radius: 15px; 
         -moz-border-radius: 15px; 
         -ms-border-radius: 15px; 
         -o-border-radius: 15px; 
         border-radius: 15px; 
         -moz-box-shadow: 1px 1px 3px #000; 
         -webkit-box-shadow: 1px 1px 3px #000; 
          box-shadow: 1px 1px 3px #000; 
     } 
     .close:hover { 
         background-color: rgba(0, 122, 200, 0.8); 
     } 
       
     Вы можете прочитать более подробно об этом тут 
     - http://dbmast.ru/sozdaem-vsplyvayushhee
     -okno-pri-zagruzke-sajta-s-pomoshhyu-css3
     -i-nemnogo-javascript 
     


    -*-

    Бегущая строка или картинка.




    Часть скрипта которую размещается между тегами (<head>………</head>) или в отдельном файле js подключенном к шаблону или странице сайта.
    Небольшое пояснение к коду.
    1.Функция outmsg() которая имеет
    Два параметра:
    - msg -текст бегущей строки для вывода циклически,
    - ctrlwidth - ширина поля вывода в символах.
    Здесь в коде к тексту msg добавлены слева символы --- , просто для того что бы не сливался в один текст, следующей и предыдущей строки.
    В переменную newmsg запишем непрерывную последовательность из ctrlwidth экземпляров текста msg.
    В форме Outmsg определяем текстовую переменную outmsg длиной ctrlwidth символов и с начальным значением newmsg.
    Вызываем программу прокрутки rollmsg().
    2. Функция rollmsg() выполняет следующие действия:
    - Записать в newmsg текущее содержимое строки текста,
    - Самый первый символ текста переставляем в конец(здесь и достигается эффект прокрутки ,
    - Полученный текст пересылается назад, в форму.
    - Функция setTimeout("rollmsg()",100) выполняет задержку функции rollmsg с интервалом в 100 миллисекунд.
    3. Вызываем функцию outmsg с соответствующими параметрами.

    Другие примеры

    1.Бегущая строка - тип 2.

    2.Бегущая строка - тип 3.



    -*-

    Форма Текстового ввода










    -*-

    Вставка адреса.


    Java Script. На месте адреса в страницу вставляется скрипт, который при помощи процедуры do*****ent.write() формирует почтовую ссылку в момент показа страницы. Спам-роботы даже не пытаются обработать этот способ, т. к. доля закодированных таким образом

    Обработка события OnClick. Этот способ основан на такой особенности Java Script, как возможность перехвата событий от элементов HTML-страницы. События могут генерироваться при наведении курсора на элемент, нажатии кнопки мыши, и т.д. Таким образом, при


    -*-


    Сноски в тексте и Спойлер.


    1. В отдельном окне

    Текст взял из http://froland.ru/samodel/myart_js7.html

    Основа скрипта: На страницу помещается невидимый блок-контейнер с position: absolute, но без указания top и left: это будет указано в скрипте. В этот контейнер вкладывается ещё один блок, в котором, собственно, и будет располагаться текст сноски и ссылка «закрыть». Стили обоих блоков заранее прописываются в тэге <style>. В стилях также указываем параметры для <span>, в который будем заключать номера сносок и ссылку «закрыть».

    Смотреть,как эта конструкция работает.

    Чтобы это работало, необходимо добавить в тэг <body> событие onLoad:
    <body onload="move();">

    Пояснение некоторых моментов:

    document.body.scrollTop и document.body.scrollLeft задают позицию левой верхней точки экрана браузера независимо от степени прокрутки страницы. Я поставил смещение на 100 px в обе стороны от угла. Вы можете настроить по-своему.

    В процессе чтения мы прокручиваем текст, а также можем изменить размеры окна. Нужно, чтобы скрипт учитывал и «ловил» эти изменения, то есть реагировал на события window.onscroll и window.onresize.

    Но есть одна «закавыка». «Мозилла» 1-й версии (до эпохи «Firefox») не реагирует на window.onscroll при прокрутке колёсиком мышки. Первый комментарий появляется где надо, а последующие (если мы работаем колёсиком, а не правой полосой прокрутки) будут появляться в той же точке, откуда «поезд уже давно ушёл».

    Но каждый раз, когда мы вызываем комментарий, мы щёлкаем по сноске, а значит, вызываем событие window.onclick. На это событие реагирует и ранняя «Мозилла». Поэтому добавляем window.onсlick = move.

    По функции showrem(fld,txt,rem,nr).

    Сноски обычно начинаются с единицы. А элементы массива — с нуля. Чтобы не забивать этим голову при установке каждой конкретной ссылки, вносим эту поправку в функцию:

    var explain = rem[nr-1];

    Вызов сноски-комментария из текста.
    Примечание:при использовании этого способа внутри тэга должно быть только число! (1,2,3,...), и никаких скобок, звёздочек, и т. п.

    Массив текстов сносок. Чтобы не загромождать код web-страницы, имеет смысл вынести его в отдельный файл.js (например, cmnt.js):

    <span class="rem" onClick="showrem('cnt', 'text', commtxt1, Number(this.innerHTML))">
    1  
    </span>
    

    Чтобы не писать в каждом вызове события onClick разные параметры для аргумента nr, можно «вытаскивать» нужный номер из содержимого самого тэга:

    Number(this.innerHTML))

    -*-

    2. Использование Спойлера.(Раскрываеться внизу строки )

    Первый спойлер - При наведении мышкой срабатывает.
    Красиво, когда их нескоько лесенкой выстраевается.
    Как работает 1-й

    Второй, при клике срабатывает.
    А так второй работает




    Пробую применить <SCRIPT language=JavaScript> Использую ID=



    А как работает СКРИПТ?



    -*-

    Пример скрипта - Запуск кнопкой.
    Ввод:



    ПРИМЕРЫ В ИНЕТЕ а это от туда некоторые взял,

    Скрипт "Движение текста по контуру"

    Пример скрипта "Движение текста по контуру".
    Такого рода скрипты удобно
    реализовывать при помощи таймеров, которые автоматически отключаются
    после выполнения задачи.


    -*-

    Новые окна Браузера.

    Пример 1:

    Который открывает новое окно. Загрузим туда web-страницу, где при нажатие кнопки
    оно будет закрыто:

     <script language="JavaScript">
       function closeIt(){
        close();
       }
     </script>
     <input type=button value="Закрыть окно" onClick="closeIt()">
     
    Почему не так?
     <input type=button value="Закрыть окно-2" onClick="close()"> 



    Пример 2:

    Открыть новое окно ЭТОГО! браузера,
    и загрузить в него файл с URL.
    URL:
    Ширина окна:
    Высота окна:
    Имя ссылки:
    Панель инструментов:
    Адрес:
    Ссылки:
    Строка состояния:
    Меню:
    Прокрутки:
    Растягивание мышью:

    Этот файл


    -*-

    Запись в реестр.Стартовая страница, Браузера.



    Реестр



    Есть сайты, что меняют стартовую страницу в Internet Explorer, то создайте файл startpage.js скопируйте туда этот код:
    Подробнее см. Объект WshShell


    Предварительно убедитесь что в каталоге Windows у вас есть файл wscript.exe (если вы пользуетесь WinXP, то он у вас скорее всего есть).

     var WSHShell = WScript.CreateObject("WScript.Shell"); 
     //Делаем задержку 10 секунд на случай если 
     //паразитный сайт добавил что-то в автозагрузку 
     WScript.Sleep(10000); 
     //Проверяем что у нас в стартовой странице 
     StartPage = WSHShell.RegRead("HKCU\\SOFTWARE\\Microsoft
        \\Internet Explorer\\Main\\Start Page"); 
     //И если там не то, что мы задумали, то меняем на свое 
     if (StartPage!="http://www.webhowto.ru/reg") { 
       WSHShell.RegWrite("HKCU\\SOFTWARE\\Microsoft
          \\Internet Explorer\\Main\\Start Page", 
       "http://www.webhowto.ru/reg"); 
     } 
     

    в строке if (StartPage!="http://www.webhowto.ru/reg") и в следующей поменяйте адрес сайта на нужный вам и добавьте этот файл в автозагрузку в раздел: HKCU\Software \Microsoft\ Windows\ Current Version\Run.
    ====
    Читать подробно пример.


    Бывают ситуации, когда надо запустить на компьютере пользователя программу в скрытом виде (чтобы не было кнопки программы на панели задач и иконки в трее, а также чтобы не было видно окна программы), однако программистами в программе не предусмотрен такой режим запуска. Примеров можно привести массу, например, запуск какого-то монитора работы пользователя или клавиатурного шпиона... В этом случае можно воспользоваться средствами WSH для скрытого запуска таких программ. Вот пример JS-скрипта, запускающего в таком режиме обычный виндовый блокнот: <br>

     var WSHShell = WScript.CreateObject("WScript.Shell"); 
     WSHShell.Run("notepad",0);  
     

    Второй параметр во второй строке, а именно - 0, указывает, что надо запустить файл в невидимом режиме. Создайте файл с расширением *. js и пропишите его в автозагрузку. Теперь работа вашей программы практически незаметна. Окно у нее невидимо, кнопки на панели задач нет, в диспетчере задач на вкладке "Приложения" она тоже не светится.
    Только в списке процессов возможно найти notepad.exe и снять его. Но если обозвать запускаемый файл по-заковыристей, например, nvidia32.exe или volsnd32.exe, то далеко не каждый пользователь найдет эту подделку. Да и потом, часто ли вы лазите в диспетчер задач с целью поиска "непонятных" процессов?


    -*-

    Новые.

    Пример:

    *^*

    INDEX

    Copyright ©kvm 2012-2019 гг.