Ключевые слова:java, faq, web, (найти похожие документы)
From: Порохня Дмитрий <[email protected]>
Date: Mon, 23 Feb 2004 14:31:37 +0000 (UTC)
Subject: FAQ по JavaScript
Оригинал: http://javascripts.boom.ru/ (JavaScript без границ)
1. Q: Как мне отобразить сообщение для посетителя (допустим, об
ошибке)?
A: Это делается так: в скрипте в нужном месте пишете:
alert("Здесь ваше сообщение!");
2. Q: А почему мой скрипт не работает в Netscape? Там нет ничего
сложного, только проверка заполнения формы и вывод сообщений, если что
неправильно...
A: Это распространенная ошибка - дело в том, что Netscape не умеет
корректро обрабатывать русскую букву "я", ему от этого сносит башню.
Лечится просто - перед каждой буквой "я" в скрипте надо поставить
обратную косую черту - "\" (без кавычек). Это касается буквы "я" в
любом регистре (как строчная, так и прописная).
3. Q: А как мне определить, каким браузером пользуется посетитель
моего сайта?
A: if(navigator.appName.indexOf("Netscape")!=-1) - Netscape
else if(navigator.appName.indexOf("Explorer")!=-1) - IE
и т.д....
4. Q: Как сделать так, чтобы при нажатии на ссылку посетитель
перенаправлялся на предыдущую страницу?
A: <a href="javascript:history.back();">Назад</a>
5. Q: Как проверить наличие символа или слова в строке?
A: Это делается так:
var sourceString="Строка для проверки";
if(sourceString.indexOf("для")!=-1) - слово "для" есть в строке
else - слова "для" нет в строке
6. Q: Какой самый быстрый способ получить символ из строки?
A: Если вам нужен именно символ, а не подстрока, вместо функции
substring лучше использовать функцию charAt(index). Например:
var sourceStr="test";
document.write(sourceStr.charAt(2)); - напишет в документ символ "s".
7. Q: Как получить случайное число в заданном диапазоне (например, 0-1000)?
A: Это делается так:
var diapazon=1000; - диапазон получаемого числа
document.write(Math.floor(Math.random()*diapazon)); - выводит в
документ случайное число в заданном диапазоне.
8. Q: Как направить пользователя на другой сайт, если его адрес
заранее неизвестен (допустим, его вводит сам посетитель)?
A: Берете введенный посетителем адрес и в скрипте делаете присвоение
свойству href: window.location.href="введенный адрес";
9. Q: Как записать в документ дату его последнего изменения?
A: document.write("Дата последнего изменения документа: " +
document.lastModified);
10. Q: Как проверить заполнение всех текстовых полей любой формы, не
перечисляя их по имени?
A: Приведенная функция проверяет на заполнение текстовых полей форму с
именем, переданным в качестве параметра:
function check(formname)
{
for(var i=0;i< document.forms[formname].elements.length;i++)
{
if(document.forms[formname].elements[i].value.length<=0)
{
alert("Пожалуйста заполните поле " +
document.forms[formname].elements[i].name + "!");
return;
}
}
}
11. Q: Как быстро сравнить два числа (строки) и узнать большее?
A: Пользуйтесь объектом Math и его методом max:
document.write(Math.max(1,2)); - запишет в документ число 2. То-же
самое и со строками - возвращается строка, имеющая наибольшее
значение.
12. Q: А тогда как узнать минимальное число из двух?
A: Пользуйтесь объектом Math и его методом min:
document.write(Math.min(1,2)); - запишет в документ число 1. То-же
самое и со строками - возвращается строка, имеющая наименьшее
значение.
13. Q: Как преобразовать строку в число (в моей форме пользователь
вводит числовое значение в одно из текстовых полей, но ведь это
строка, а мне в цикле нужно число)?
A: Метод parseInt:
var stringInt="25";
parseInt(stringInt) - получившееся число, то есть 25.
14. Q: A как вытащить заголовок документа?
A: document.write("Заголовок текущего документа: " + document.title);
15. Q: Как получить значение User Agent (что за браузер пришел)?
A: document.write("User Agent: " + navigator.userAgent);
16. Q: Как сделать страницу стартовой?
A: <a href="адрес"
onclick="this.style.behavior='url(#default#homepage)';
this.setHomePage('http://адрес');">Сделать стартовой!</a>
17. Q: А как добавить страницу в "Избранное"?
A: <a
href="javascript:window.external.addFavorite('http://адрес','Заголовок
');">
Добавить в "Избранное"</a>
18. Q: Как определить размер экрана (в пикселах) у посетителя?
A: screen.width - ширина экрана в пикселах;
screen.height - высота экрана в пикселах.
19. Q: Как определить тип процессора из JavaScript?
A: В общем, можно попытаться так:
document.write("Класс вашего процессора: " + navigator.cpuClass);
20. Q: Как определить, на какой платформе работает браузер?
A: Попробуйте следующее:
document.write("Платформа: " + navigator.platform);
21. Q: Как определить, какой язык используется в системе по умолчанию?
A: Можно вот так:
document.write("Язык системы по умолчанию: " +
navigator.systemLanguage);
22. Q: А как определить текущий язык в системе?
A: Можно вот так:
document.write("Текущий язык системы: " + navigator.userLanguage);
23. Q: А можно ли определить количество дисков в системе из JavaScript?
A: Можно, но учтите, что этот способ использует ActiveX (правда, она
уже стоит практически у всех), и поэтому браузер может запросить у вас
разрешение на запуск (приведенная функция запишет в документ
информацию о дисках):
function showDriveList() {
var fso = new ActiveXObject("Scripting.FileSystemObject");
document.write("Кол-во дисков в системе: " + fso.drives.count + ";
Буквы дисков: ");
var coll = new Enumerator(fso.Drives);
for (; !coll.atEnd(); coll.moveNext()) {
document.write(coll.item().DriveLetter + " ");
}
}
24. Q: Как определить, включены ли cookie?
A: Это делается так:
if(navigator.cookieEnabled)
document.write("Поддержка cookie включена!");
else document.write("Поддержка cookie выключена!");
25. Q: Как определить количество цветов в системе?
A: Вот так:
document.write("Количество поддерживаемых цветов: "
+ Math.pow(2,screen.colorDepth));
26. Q: Как определить видеорежим (количество бит на пиксел)?
A: Можно вот так: document.write("Бит на пиксел: " +
screen.colorDepth);
27. Q: А как определить тип соединения (lan или др)?
A: Это сложнее и работает только в IE. Для начала сделайте тег HTML
вот таким:
<HTML xmlns:IE>
Потом табличка стилей:
<STYLE>
@media all {
IE\:CLIENTCAPS {behavior:url(#default#clientCaps)}
}
</STYLE>
Потом в теле документа:
<IE:CLIENTCAPS ID="oClientCaps" />
<DIV id="oPre"></DIV>
После этих тегов скрипт:
<SCRIPT>
<!--
oPre.innerText = oClientCaps.connectionType;
-->
</SCRIPT>
28. Q: Как определить, онлайн ли браузер?
A: Попробуйте так: if(navigator.onLine)
document.write("Браузер онлайн!");
else document.write("Браузер оффлайн!");
29. Q: Как определить дату создания документа?
A: Это делается так:
document.write("Документ создан: " + document.fileCreatedDate);
30. Q: Как определить размер документа в килобайтах?
A: Вот так:
document.write("Размер документа: " + document.fileSize/1024 + " Кб.");
31. Q: Как просто получить случайную строку?
A: Этот скрипт выводит uniqueID документа, который легко можно
использовать как случайную строку (перезагрузите страничку несколько раз):
document.write("Случайная строка: " +document.uniqueID);
32. Q: А как узнать, какой текст находится в буфере обмена?
A: Можно вот так (скопируйте какой-нибудь текст в буфер, потом обновите страничку):
document.write("Текст в буфере: " +
window.clipboardData.getData("Text"));
33. Q: А как почистить буфер обмена?
A: Вот так:
<script>
window.clipboardData.clearData("Text");
window.clipboardData.clearData("URL");
window.clipboardData.clearData("File");
window.clipboardData.clearData("HTML");
window.clipboardData.clearData("Image");
</script>
34. Q: Как определить кодировку документа?
A: Это делается так:
document.write("Кодировка документа: " + document.charset);
35. Q: Можно ли вызвать диалог "Упорядочить Избранное", например?
A: Можно:
<a href="javascript:window.external.ShowBrowserUI('LanguageDialog', null)">
Диалог выбора языка</a>
<a href="javascript:window.external.ShowBrowserUI('OrganizeFavorites', null)">
Диалог "Упорядочить Избранное"</a>
36. Q: Как мне сменить вид стандартного курсора мыши на другой?
A: Это делается при помощи таблицы стилей, например, вот так:
<SPAN STYLE="cursor: crosshair">crosshair</SPAN>
<SPAN STYLE="cursor: default">default</SPAN>
<SPAN STYLE="cursor: hand">hand</SPAN>
<SPAN STYLE="cursor: move">move</SPAN>
<SPAN STYLE="cursor: e-resize">e-resize</SPAN>
<SPAN STYLE="cursor: ne-resize">ne-resize</SPAN>
<SPAN STYLE="cursor: nw-resize">nw-resize</SPAN>
<SPAN STYLE="cursor: n-resize">n-resize</SPAN>
<SPAN STYLE="cursor: se-resize">se-resize</SPAN>
<SPAN STYLE="cursor: sw-resize">sw-resize</SPAN>
<SPAN STYLE="cursor: s-resize">s-resize</SPAN>
<SPAN STYLE="cursor: w-resize">w-resize</SPAN>
<SPAN STYLE="cursor: text">text</SPAN>
<SPAN STYLE="cursor: wait">wait</SPAN>
<SPAN STYLE="cursor: help">help</SPAN>
37. Q: Как проверить адрес e-mail на правильность?
A: Один из лучших методов - использование регулярных выражений.
Нижеприведенный пример делает именно так, а если регулярные выражения
не поддерживаются - проводит проверку другим способом:
Функция возвращает true, если адрес правильный, и false в противном
случае:
function isEmail(str) {
var supported = 0;
if (window.RegExp) {
var tempStr = "a";
var tempReg = new RegExp(tempStr);
if (tempReg.test(tempStr)) supported = 1;
}
if (!supported)
return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
var r2 = new
RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
return (!r1.test(str) && r2.test(str));
}
38. Q: Как сделать, чтобы в "Избранном" вместо стандартной иконки
помещалась моя собственная?
A: Поместите нижеприведенный код в раздел <HEAD> документа (еще
необходимо иметь на сайте саму иконку, конечно):
<LINK REL="SHORTCUT ICON"
HREF="http://www.мой_адрес.ru/имя_файла_иконки.ico">
39. Q: А можно ли сделать так, чтобы при нажатии на ссылку посетитель
мог сохранить страницу на диск?
A: Можно, но работает только в IE:
<a href="javascript:document.execCommand('SaveAs');">Сохранить</a>
40. Q: Как я могу узнать размеры активного окна (документа), а не всего экрана?
A: Это вполне возожно (измените размеры окна несколько раз):
function wh()
{ var height, width;
if (document.all)
height = document.body.offsetHeight, width =
document.body.offsetWidth;
else if (document.layers)
height = window.innerHeight, width = window.innerWidth;
alert("Ширина окна: " + width + "\nВысота окна: " + height);
}
41. Q: Как узнать координаты щелчка мышью в документе?
A: Это делается вот так:
function GetCoord(e) {
if (navigator.appName == "Microsoft Internet Explorer"){
cX = event.clientX;
cY = event.clientY;
}
else {
cX = e.pageX;
cY = e.pageY;
}
alert("Координаты щелчка: x = " + cX + "; y = " + cY);
}
42. Q: А как заблокировать вывод выпадающего меню по правой кнопке
мыши без дурацкого окна-алерта?
A: Вот так, товарищч (попробуйте щелкнуть правой мышой в документе):
<script language="JavaScript1.2">
<!--
if (window.Event)
document.captureEvents(Event.MOUSEUP);
function nocontextmenu() {
event.cancelBubble = true, event.returnValue = false;
return false;
}
function norightclick(e) {
if (window.Event) {
if (e.which == 2 || e.which == 3) return false;
}
else if (event.button == 2 || event.button == 3) {
event.cancelBubble = true, event.returnValue = false;
return false;
}
}
if (document.layers)
document.captureEvents(Event.MOUSEDOWN);
document.oncontextmenu = nocontextmenu;
document.onmousedown = norightclick;
document.onmouseup = norightclick;
//--> </script>
43. Q: А как закрыть родительское окно из дочернего без появления
надоедливого "А вы действительно хотите закрыть окно"?
A: Вот так (установите время срабатывания таймера, какое вам нужно):
<SCRIPT LANGUAGE="JavaScript">
<!--
window.open("filename.htm","newwindow","width=725,height=125");
setTimeout(\'window.close()\',5000);
//-->
</SCRIPT>
44. Q: Как автоматически подстроить размер окна под рисунок, который
оно содержит?
A: Можно таким способом (один файл открывает все рисунки):
Файл - открывальщик рисунков:
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
<!--
function resizer() {
if (document.images) {
resizeTo(document.images[0].width+10,document.images[0].height); }
else setTimeout('resizer()', 500);
}
//-->
</SCRIPT>
</head>
<body marginwidth=0 marginheight=0 topmargin=0 leftmargin=0>
<SCRIPT LANGUAGE="JavaScript">
<!--
var
imgName=document.location.search.substring(document.location.search.in
dexOf("=")+1,document.location.search.length);
imgName = imgName.replace("*",".");
document.write('<img src="' + unescape(imgName) + '">');
resizer();
//-->
</SCRIPT>
</body>
</html>
Подключаемый *.js-файл с функцией открытия нового окна:
function openImg(imgName)
{
imgName = imgName.replace(".","*");
var resW = "имя_файла_открывальщика.htm?iname=" + escape(imgName);
window.open(resW,'newwin','scrollbars=no, status=no, toolbar=no,
location=no, width=50, height=50, left=150, top=150');
}
Пример вызова:
<a href="javascript:openImg('имя_рисунка');">Открыть рисунок</a>
45. Q: Как я могу расположить окно постоянно впереди других?
A: Это возожно (не знаю, как впереди, но иконка на панели задач
замигает точно, привлекая внимание):
<body onBlur="self.focus();">
Автор - Порохня Дмитрий ([email protected]; JavaScript без границ)
http://javascripts.boom.ru/
Как проверить правильность написания даты, ятобы работала в FireFox в таком формате 28/12/2006
Наприер: есть textbox, в нем пишут дату, чтобы была в вышеперечисленном формате.
Если использовать родительское окно с фреймами, то из фреймов можно сохранять данные в виде parent.document.VariableName = ... Они будут доступны всем дочерним окнам главного окна.
Причем, можно получить доступ как к объектам родительского окна, так и создать необходимое количество переменных.
>А можно вывести Джавой диалоговое окно типа
>
>Вы действительно хотите сделать то-то и то-то?
>
> [Yes] [No]
>
>Вариант с использованием отдельного HTML-документа и показа модального окна нежелателен.
<style type="text/css">
#q {width: 330px; height: 100px; border: #0000FF outset 2px; padding:10px;}
div p {text-align:center;}
span {cursor: pointer;}
</style>
<body>
<div id = "q">
Вы действительно хотите сделать то-то и то-то?
<p>
<span onclick="alert('Да');">[Да]</span> <span onclick="alert('Нет');">[Нет]</span>
</p>
</div>
>А можно вывести Джавой диалоговое окно типа
>
>Вы действительно хотите сделать то-то и то-то?
>
> [Yes] [No]
>
>Вариант с использованием отдельного HTML-документа и показа модального окна нежелателен.
======
Окно подтверждения. Вызывается методом confirm(question). Возвращает true или false, в зависимости от того, какую кнопку подтверждения нажмет пользователь. В качестве параметра question передается вопрос пользователю.
Пример:
<input type="button" name="button2" id="button2" value="Задать вопрос" onclick="confirm('Вы поняли о чем речь?');" />
Возможно ли зделать так чтоби не зависимо от размеров рисунка, прописав код на странице в опредиленном месте все рисунки били одинаковой висоти? Если возможно подскажире какой....
>Возможно ли зделать так чтоби не зависимо от размеров рисунка, прописав код
>на странице в опредиленном месте все рисунки били одинаковой висоти? Если
>возможно подскажире какой....
<IMG SRC="..." HEIGHT="100"> - и так у всех рисунков. Можно высоту указывать в %-х от размеров окна. Ширина WEIGHT.
>>Возможно ли зделать так чтоби не зависимо от размеров рисунка, прописав код
>>на странице в опредиленном месте все рисунки били одинаковой висоти? Если
>>возможно подскажире какой....
>
><IMG SRC="..." HEIGHT="100"> - и так у всех рисунков. Можно высоту указывать в %-х от размеров окна. Ширина WEIGHT.
Возможно ли зделать так чтоби не зависимо от размеров рисунка, прописав код на странице в опредиленном месте все рисунки били одинаковой висоти? Если возможно подскажире какой....