[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Рекламный блок Форума
Реклама
  • Страница 1 из 1
  • 1
Всё для веб мастера. Скрипты для сайта uCoz » Вебмастеру » Уроки (php,css,html,java, и тд..) » FAQ по JavaScript
FAQ по JavaScript
Dante Дата: Среда, 05.01.2011, 16:23 | Сообщение # 1
Салага
Сообщений: 247
Награды: 2
Репутация: 154
Как запретить пользователю просмотреть код страницы?
Никак.
Существующие способы, базирующиеся на языке JavaScript, не позволяют достичь принципиальной защиты. Они приемлемы лишь для защиты от неопытных пользователей.

Как с помощью JavaScript подгрузить произвольный file.js?

Code
<script language="JavaScript">
document.write("<"+"script language=\"JavaScript\" src='...'></"+"script>");
</script>

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

Как работать с cookie?
Cookie позволяют хранить данные подобно глобальным переменным. Работать с cookie можно с помощью таких функций:

Code
/**
   * cookieName - имя cookie
   * cookieContent - что записываем
   * cookieExpireTime - сколько времени будут жить cookie в часах. Если 0 - то помрут вместе с закрытием браузера.
   */
function setCookie(cookieName, cookieContent, cookieExpireTime){
      if(cookieExpireTime>0){
          var expDate=new Date();
          expDate.setTime(expDate.getTime()+cookieExpireTime*1000*60*60);
          var expires=expDate.toGMTString();
          document.cookie=cookieName+"="+escape(cookieContent)+"; path="+escape('/')+"; expires="+expires;
      }else{
          document.cookie=cookieName+"="+escape(cookieContent)+"; path="+escape('/')+"";
      }
}
     
function getCookie(cookieName){
      var ourCookie=document.cookie;
      if(!ourCookie || ourCookie=="")return "";
      ourCookie=ourCookie.split(";");
      var i=0;
      var Cookie;
      while(i<ourCookie.length){
          Cookie=ourCookie[i].split("=")[0];
          if(Cookie.charAt(0)==" ")
                  Cookie=Cookie.substring(1);
          if (Cookie == cookieName){
              var res = ourCookie[i].split('=')[1];
              return (typeof res != 'undefined') ? unescape(res) : '';
          }
          i++;
      }
      return "";
}

Как запросить подтверждение у пользователя при переходе по ссылке?

Code
<a href="url" onclick="return confirm('Уверены?')">...</a>

Как отследить события клавиатуры?
Рассмотрим это на примере отслеживания нажатия кнопки "S"

Code
function kdown(e){   
      if (e.keyCode == 'S'.charCodeAt(0)) alert('S pressed');
}
document.onkeydown=kdown;

Не получается обратиться к свойству другого фрейма/окна.
Если содержимое другого фрейма (окна) представляет собой документ с чужого сервера (домена), то ничего сделать нельзя из соображений безопасности. Если странички лежат на разных поддоменах (например, a.site.ru и b.site.ru) и вы имеете доступ до тех и других, пропишите в них document.domain="site.ru"

Соображения безопасности тут такие: К примеру, вы работаете с каким-нибудь администраторским интерфейсом или читаете почту через веб-форму. Некто присылает вам ссылку "приколись, чувак, новый секретный мультик про Масяню", вы открываете ее, а там страница, которая грузит к себе во фрейм этот самый ваш запароленный интерфейс и делает с ним, что хочет - ведь браузер запомнил ваш пароль.

Может быть, что вы просто неправильно пишете путь к фрейму. Правильный путь
top.название_окна.frames.имя_фрейма . Если окно - текущее, то название окна можно опустить, получится top.frames.имя_фрейма .

У меня сайт с фреймами, но человек может загрузить какой-то фрейм отдельно. Как подсунуть ему фреймсет?
У объекта window есть свойства parent и top, которые ссылаются на содержащие его окна (top ссылается на окно самого верхнего уровня). Если страница загружена не во фреймсете, эти свойства ссылаются на само окно.

В результате получаем что-то вроде

Code
if(parent==this) location="адрес страницы с фреймсетом";

Также, у окна есть свойство frames, ссылающееся на массив фреймов. Если мы уверены, что страницы, подгружающиеся во фреймы основного окна сайта, не являются в свою очередь фреймсетами - можно проверить parent.frames.length . В этом случае получится следующее

Code
if(!parent.frames.length) location="адрес страницы с фреймсетом";

О том, как сделать, чтобы в этом фреймсете открывалась нужная страница, читайте здесь.

Все вышесказанное касается и страниц, подгружаемых в iframe.

Как передать параметр в загружаемый документ и прочитать его там?
Через строку запроса, как это происходит при передаче данных серверу методом GET. Можно написать

Code
<a href="file.html?123">

тогда в файле file.html можно будет прочитать переменную location.search, которая будет содержать "?123". Остается взять часть строки со второго по счету символа: location.search.substring(1).

Для передачи нескольких параметров, к примеру так: file.html?x=1&y=2, можно предложить несложную функцию, которая, будучи записана в file.html, вернет значение переменной с указанным именем:

Code
function getVariable(varName){
          var arg=location.search.substring(1).split('&');
          var variable="";
          var i;
          for(i=0;i<arg.length;i++){
                  if(arg[i].split('=')[0]==varName){
                          if(arg[i].split('=').length>1){
                     variable=arg[i].split('=')[1];
                          }
                          return variable;
                  }
          }
          return "";
}

Как вызвать функцию JavaScript при нажатии на ссылку или кнопку в форме?
Можно записать в атрибут HREF тега вызов кода JavaScript:

Либо можно записать код JavaScript в атрибуты обработчиков событий, например onclick, onmouseover, onsubmit. При этом префикс "javascript:" писать не следует.

Если хочется, чтобы вызов события не привел к действию, например нажатие на ссылку не привело к переходу по ней, следует возвратить false, иначе возвратить true.

Пример:

Code
<a href="target.html" onclick="alert('HELLO'); return false">

при нажатии на ссылку переход по ней осуществлен не будет, вместо этого появится окошко со словом "HELLO". Но если открыть эту ссылку в новое окно, то загрузится target.html.

Можно, к примеру, сделать проверку правильности заполнения формы:

Code
<form action="" onsubmit="return check()">

Функция check() должна будет либо вернуть true, тогда форма отправится, либо false, тогда нет.

По поводу протокола javascript:
javascript: есть протокол (как http:, mailto: и т. д.)
ссылка c javascript-протоколом имеет вид javascript:выражение (в отличие от event handler'oв - не содержимое функции, поэтому она не может содержать return)
при клике на эту ссылку браузер поступает следующим образом:
вычисляет выражение. Если имеются побочные эффекты (напр. window.open), они выполняются
если выражение возвращает результат, отличный от undefined...
...результат преобразуется к типу string и используется в качестве контента для новой страницы (введите, к примеру, в адресную строку javascript:1+1)

Почему у меня не получается впечатать в документ с помощью document.write SSI-инструкцию?
Вопрос:
Я пытаюсь впечатать в документ SSI-инструкцию такой строчкой:

Code
document.write("<!--#include virtual=\""+file+".shtml\" -->");

но она почему-то не исполняется? Что я делаю неправильно?
Ответ:
Дело в том, что SSI (Server Side Includes) исполняются на сервере. Т.е. когда сервер уже отдал документ клиентскому браузеру, то он (сервер) уже не властен над этим документом. И когда вы пытаетесь впечатать в документ SSI-инструкцию, ее уже некому исполнять.

Как убрать оформление текущего окна?
Никак. Если не считать различных "хакерских" трюков, работающих в отдельных браузерах на отдельных платформах.

Как запретить выделение текста мышкой?
MSIE:

Code
<body onselectstart="return false">

Mozilla:
document.onmousedown=function(){return false}

или указав для body стиль -moz-user-select: none

Работа с textarea. Как переместить каретку? Как получить выделенный текст?

Чистое javascript-решение возможно только в MSIE 4 и выше. Для манипуляций с выделенной областью существует объект TextRange. Пример:

Code
<textarea id="myTextArea">The text</textarea>   
<button onclick="test()">Test</button>   
<script>   
function test()   
{
      var myTextArea = document.getElementById('myTextArea');
      // убедиться, что каретка находится в текстовом поле   
      myTextArea.focus();   
      // создать объект TextRange на основе текущего выделения   
      var rng=document.selection.createRange();   
      // расширить выделение на 3 символа вправо   
      rng.moveEnd('character',3);   
      // сделать выделение текущим   
      rng.select();   
      // достать выделенный текст   
      alert(rng.text);   
}
</script>

Как распечатать один из фреймов?
Если просто написать

Code
top.frames[3].print();

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

Code
top.frames[3].focus();
top.print();

Как заменить перенос строки на
?

На Windows перевод строки - это два символа \r\n (коды 13 и 10), на Юниксах - один символ: \n, под Макинтош - \r. Учитывая все три варианта:

Code
myText = myText.replace(/\r\n?|\n/g,"<br>");

Как приостановить выполнение скрипта?
Если программе нужно что-то сделать позже, можно установить для этого таймаут:

Code
function task1() {
    // Здесь что-то делаем, после чего надо подождать пару секунд
    setTimeout("task2()", 2000);
}
     
function task2() {
    // Продолжаем выполнение после двухсекундной задержки
}

Как заставить скрипт выполняться много раз через определенное время?
Если интервал повтора всегда одинаковый, то следует воспользоваться функцией setInterval():

Code
function func() {
      // что-то делаем
}
// регистрируем периодический вызов функции через 1 секунду
setInterval("func()", 1000);

Как отменить назначенный таймаут/интервал (setTimeout/setInterval)?
Функции setTimeout() и setInterval() возвращают число, которое является идентификатором созданного таймаута/интервала. Этот идентификатор можно использовать в функциях clearTimeout() и clearInterval() для отмены setTimeout() и setInterval() соответсвенно.

Пример:

Code
function test() {
      // этот код не будет выполнен
      alert();
}
var N = setTimeout("test()", 5000);
clearTimeout(N);

Для чего в JavaScript используется символ "$" ?
Символ $ в JavaScript является "буквой". Его можно использовать на равне в латинскими буквами в именах переменных, функций и т.п. Примеры:

Code
var a$ = 1, $b = 2, $c$ = 3, d$ = 4, $$$ = 5, $ = 6;
function $f() {
      return;
}
Всё для веб мастера. Скрипты для сайта uCoz » Вебмастеру » Уроки (php,css,html,java, и тд..) » FAQ по JavaScript
  • Страница 1 из 1
  • 1
Поиск:

 
Ваш логин: Ваш пароль: