FAQ по JavaScript - Форум электронных новостей
Вход


Мини-чат
200


Нажимай , если не слабо !


РЕКЛАМА


Приветствую Вас, Гость · RSS 21.06.2025, 05:12
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
FAQ по JavaScript
ChevyДата: Среда, 24.08.2011, 14:41 | Сообщение # 1
Chevy
Администраторы
Генералиссимус
"Нет титула"
Сообщений: 85
Offline
Как запретить пользователю просмотреть код страницы?
Никак.
Существующие способы, базирующиеся на языке JavaScript, не позволяют достичь принципиальной защиты. Они приемлемы лишь для защиты от неопытных пользователей.

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

<script language="JavaScript">
document.write("<"+"script language=\"JavaScript\" src='...'></"+"script>");
</script>
тег </script> необходимо разбить, чтобы браузер не думал, что внешний скрипт закончился на этом теге.

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

/**
* 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 "";
}
Как запросить подтверждение у пользователя при переходе по ссылке?
Код HTML
1
<a href="url" onclick="return confirm('Уверены?')">...</a>
Как отследить события клавиатуры?
Рассмотрим это на примере отслеживания нажатия кнопки "S"
Код Javascript
1
2
3
4
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 ссылается на окно самого верхнего уровня). Если страница загружена не во фреймсете, эти свойства ссылаются на само окно.

В результате получаем что-то вроде
Код Javascript
1
if(parent==this) location="адрес страницы с фреймсетом";
Также, у окна есть свойство frames, ссылающееся на массив фреймов. Если мы уверены, что страницы, подгружающиеся во фреймы основного окна сайта, не являются в свою очередь фреймсетами - можно проверить parent.frames.length . В этом случае получится следующее
Код Javascript
1
if(!parent.frames.length) location="адрес страницы с фреймсетом";
О том, как сделать, чтобы в этом фреймсете открывалась нужная страница, читайте здесь.

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

Как передать параметр в загружаемый документ и прочитать его там?
Через строку запроса, как это происходит при передаче данных серверу методом GET. Можно написать
Код HTML
1
<a href="file.html?123">
тогда в файле file.html можно будет прочитать переменную location.search, которая будет содержать "?123". Остается взять часть строки со второго по счету символа: location.search.substring(1).

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

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 тега <A> вызов кода JavaScript:
Код HTML
1
<a href="javascript:f()">
Либо можно записать код JavaScript в атрибуты обработчиков событий, например onclick, onmouseover, onsubmit. При этом префикс "javascript:" писать не следует.

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

Пример:
Код HTML
1
<a href="target.html" onclick="alert('HELLO'); return false">
при нажатии на ссылку переход по ней осуществлен не будет, вместо этого появится окошко со словом "HELLO". Но если открыть эту ссылку в новое окно, то загрузится target.html.

Можно, к примеру, сделать проверку правильности заполнения формы:
Код HTML
1
<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-инструкцию такой строчкой:
Код Javascript
1
document.write("<!--#include virtual=\""+file+".shtml\" -->");
но она почему-то не исполняется? Что я делаю неправильно?
Ответ:
Дело в том, что SSI (Server Side Includes) исполняются на сервере. Т.е. когда сервер уже отдал документ клиентскому браузеру, то он (сервер) уже не властен над этим документом. И когда вы пытаетесь впечатать в документ SSI-инструкцию, ее уже некому исполнять.

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

Как запретить выделение текста мышкой?
MSIE:
Код HTML
1
<body onselectstart="return false">
Mozilla:
Код Javascript
1
document.onmousedown=function(){return false}
или указав для body стиль -moz-user-select: none

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

<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>
Как распечатать один из фреймов?
Если просто написать
Код Javascript
1
top.frames[3].print();
то, скорее всего, распечатается не тот фрейм, который нужен. Необходимо сначала передать нужному фрейму фокус, после чего можно вызывать функцию print всего окна:
Код Javascript
1
2
top.frames[3].focus();
top.print();
Как заменить перенос строки на <BR>?
На Windows перевод строки - это два символа \r\n (коды 13 и 10), на Юниксах - один символ: \n, под Макинтош - \r. Учитывая все три варианта:
Код Javascript
1
myText = myText.replace(/\r\n?|\n/g,"<br>");
Как приостановить выполнение скрипта?
Если программе нужно что-то сделать позже, можно установить для этого таймаут:
Код Javascript

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

function task2() {
// Продолжаем выполнение после двухсекундной задержки
}
Как заставить скрипт выполняться много раз через определенное время?
Если интервал повтора всегда одинаковый, то следует воспользоваться функцией setInterval():
Код Javascript

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

Пример:
Код Javascript

function test() {
// этот код не будет выполнен
alert();
}
var N = setTimeout("test()", 5000);
clearTimeout(N);
Для чего в JavaScript используется символ "$" ?
Символ $ в JavaScript является "буквой". Его можно использовать на равне в латинскими буквами в именах переменных, функций и т.п. Примеры:
Код Javascript

var a$ = 1, $b = 2, $c$ = 3, d$ = 4, $$$ = 5, $ = 6;
function $f() {
return;
}
  • Страница 1 из 1
  • 1
Поиск:

Хостинг от uCoz