From: "CoModerator of RU.JAVASCRIPT" <CoModerator.of.RU.JAVASCRIPT@p1006.f175.n5030.z2.fidonet.org>
Date: Fri, 20 Sep 2002 10:26:52 +0400
Subj: RU.JAVASCRIPT FAQ
FAQ I. Docs and Links
1.пошлите меня туда, где есть какие книжки
(можно и на английском) по эхотагу, лучше в электронном виде
>Книги по JavaScript:
>>From: "Vitaly Vasilchuk" <vitaly@basis.ru.kiev.ua>
www.izone.com.ua/info/download_web.html
>>From : shilk@telecom.chita.ru
Вот что я нарыл в свое время:
1) Hаталия Бельтикова, Ирина Кузина. Методы и функции JavaScript.
http://webims.virtualave.net/docs/js/jsrus/index.htm
2) Hебольшой справочник по JavaScript by Ataev RUSlan
http://gid.spb.ru/RUS/Java.htm
3) JavaScript Шаг за шагом by Андрей Кузин
http://www.mjk.msk.ru/~dron/html/js.shtml
>>From : Artem Babadzhanyants
http://developer.netscape.com
http://www.javascript.com
http://www.javascript.ru
http://www.citycat.ru/doc/
http://godegisel.protey.ru/library/docs/www/
>>From: Пушко Василий
http://javascripts.boom.ru/
примечание from Comoderator: "новички - читайте там полезные статьи!"
>>From: Alexey Medvedev 2:463/733.137
www.bratta.com/dhtml/ - прикольный JS типа Flash/vector graphics
много примеров для внедрения в свои странички.
www.dansteinman.com/dynduo/ - кросс броузер DHTML API низкого
ровня (IE4,5 , NN4 , Mozilla5). Разрабатывается под GNU license.
сть реализация widget-ов (кнопки, check, list, menu, window, scroll .etc.)
www.htmlguru.com - "родоначальник" DHTML :)
стильно оформленый сайт с учебниками по DHTML
deep.kiev.ua - пример реализации графов для NN-DHTML
(масштабирование под окно, обработка resize event без reload - NN).
deep.kiev.ua/~netlib/ - библиотека по webdesign. Основная часть
освящена JS , DHTML с примерами (например как _создавать_ GIF и PNG
артинки на JS в NN или как сделать еффект hover в NN ).
>>From: Evgenij Koronin <koronin@yahoo.com>
W3 concorcium resources
http://www.w3.org/MarkUp/W3 - HyperText Markup Language
http://www.w3.org/MarkUp/W3 - XHTML Recommendation
http://www.w3.org/CSS/W3 - CSS and Style
http://www.w3.org/DOM/W3 - Document Object Model
http://www.w3.org/XML/W3 - XML
http://www.w3.org/TV/W3 - TV and the Web
HTML, CSS and Javascript
http://www.blooberry.com/indexdot/html/ - HTML Reference
http://www.blooberry.com/indexdot/css/ - CSS Reference
http://www.htmlib.com/where.htm - HTMLib 4.0 - complete HTML/CSS/Javascript
reference (download)
Complete Libraries
http://msdn.microsoft.com/workshop/ - MSDN Workshop
http://developer.netscape.com/docs/index.html - Netscape DevEdge Documentation
Library
http://www.wdvl.com - Web Developer's Virtual Library
Articles and Tutorials
http://builder.cnet.com - CNET Web Builder
http://www.siteexperts.com - Site Experts
http://www.webdeveloper.com - Web Developer
http://www.zdnet.com/devhead/ - ZDNet Developer Head
http://hotwired.lycos.com/webmonkey/ - Hotwired Webmonkey
http://developer.earthweb.com/ - Earthweb Developer
http://www.webreview.com/ - Web Review
http://www.webreference.com/ - Web Reference
http://www.1001tutorials.com/ - 1001 Tutorials
вставляйте свои ссылки!
FAQ II. General javascript
1. так, чтобы на событие onclick - фон менялся?
>> From : Vitaly Karmazinsky 2:5020/400 Mon 13 Dec
>> 99 12:24
Q> так, чтобы на событие onclick - фон менялся?
<A HREF="http://www.yahoo.com"
onMouseOver="document.bgColor='red'">Yahoo</a>
Будущий фон определяется между кавычками ' '
red - красный;
black - черный;
yellow - желтый;
white - белый;
green - зеленый;
brown - коричневый;
bgColor - фон;
fgColor - текст;
linkColor - цвет ссылки;
>>From Evgenij Koronin <koronin@yahoo.com>
<a href="javascript:document.bgColor='red'">change color</a>
2. Вобщем, надо если включен js показать один кусочек html кода, а если
выключен другой.
From: "Michael A. Kangin" <mak@complife.net>
<script>
document.writeln('Один кусочек')
</script>
<noscript>
Другой кусочек
</noscript>
3. А как на JavaScript по гипеpccылке можно пеpедать
паpаметp (напpимеp название файла) cо одной cтpанички
на дpугую? Идея cоcтоит в том, чтобы cтpаничка pаботала
по-pазному в завиcимоcти от того, откуда на неё вошли.
>> From : Michael A. Kangin 2:5020/400 Fri 28
>> Jan 00 03:26
1. Откуда пришли на данную страничку, можно попробовать узнать по
document.referrer
2. Параметры можно передавать как <a href="file.htm?parameter=value">, и
вытаскивать их как parameter=document.location.search;
4. Помню, что для того, чтобы пеpедать паpаметp, надо:
<A HREF="webpage.htm?param1=value1¶m2=value2&...">ssd</A>
А вот как добыть значения паpаметpов, не помню.
>>From: Evgenij Koronin <koronin@yahoo.com>
Modified code taken from MSTV OneWorld UI
-+--------------------------------------------
var QueryString = new Array();
QueryString["_"]="";
function unspace( qs_element ) {
return qs_element.split( '+' ).join( ' ' );
}
if ( location.search.length > 1 ) {
var qs_query = location.search.substring( 1, location.search.length );
var qs_pairs = qs_query.split( '&' );
for ( var qs_index = 0; qs_index < qs_pairs.length; qs_index++ ) {
var qs_element = qs_pairs[qs_index].split( '=' );
QueryString[qs_element[0]] = unspace( unescape( qs_element[1] ) );
}
}
-+--------------------------------------------
использовать: var myVar = QueryString["parameter"];
5. пoдcкaжитe plz кaк cдeлaть в html ccылкy кoтopaя бы paбoтaлa кaк ктoпкa
back в бpoyзepe
>> From : Igor Kanshin 2:463/1124.50 Sat 05 Feb
>> 00 11:39
<a href="JavaScript:history.back()">Back</a>
6. Пpедположим надо создать новое окошко, но не на основе yже сyществyющего
html-файла, а сфоpмиpовать его на JavaScript и потом yже откpыть в новом окне.
>> From : Andrew Konovalov 2:5030/1139 Sun 13 Feb
>> 00 09:11
newWindow = window.open(...);
newWindow.document.write(...);
>>From: Evgenij Koronin <koronin@yahoo.com>
newWindow = window.open("");
s=your_html;
with (newWindow.document)
{
open();
write(s);
close();
}
7. А как можно загрузить картинку до того,
как начнёт загружаться остальная часть страницы?
>> From : V.Kobychev 2:5020/400 Mon 21 Feb
>> 00 15:44
<html><head>
<script LANGUAGE="JavaScript">
<!--
function PreloadImages()
{
if (document.images)
{
var imgFiles = PreloadImages.arguments;
var preloadArray = new Array();
for (var i=0; i<imgFiles.length; i++)
{
preloadArray[i] = new Image;
preloadArray[i].src = imgFiles[i];
}
}
}
PreloadImages('picture1.jpg','picture2.jpg','picture3.gif'); // и еще
сколько угодно картинок
// -->
</script>
<body>
....
</body>
</html>
8. Как этой хpенью пользоваться ????? Hаписанно window.opener.ля-ля ;((
>> From : Vitaly Karmazinsky 2:5020/400 Fri 17 Mar
>> 00 13:45
window.opener.document.my_form.my_element.value = 'test';
Вот таким кодом можно вставить данные в форму
родительского окна. Работает везде.
9."Nikolai Levtchenko" <Nikolai.Levtchenko@p73.f4001.n5020.z2.fidonet.org>
wrote in message >
> Существует ли сабж? Чтобы можно было пошагово выполнять, проверять
сосотояние
> переменных и т.д.?
>
http://msdn.microsoft.com/scripting/debugger/default.htm
Очень удачный отладчик от Netscape
ftp://ftp.netscape.com/pub/jsdebug/rtm/jsd10su.jar
FAQ III. Browser, mouse buttons, cookies, new windows etc.
1.у кого-нибудь есть универсальный код работы с subj (функции типа setcookie,
getcookie, killcookie..... )
>>From: Evgenij Koronin <koronin@yahoo.com>
//---------------------------------------------------------------------
// Function to return the value of the cookie specified by "name".
// Parameter:
// name String object containing the cookie name.
// Return: String object containing the cookie value, or null if
// the cookie does not exist.
//---------------------------------------------------------------------
function GetCookie (name)
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
//---------------------------------------------------------------------
// Function to get a cookie.
//---------------------------------------------------------------------
function getCookieVal( offset )
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
//---------------------------------------------------------------------
// Function to set a cookie.
//---------------------------------------------------------------------
function SetCookie( name, value )
{
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie =
name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
//---------------------------------------------------------------------
// Function to delete a cookie. (Sets expiration date)
// name - String object containing the cookie name
//---------------------------------------------------------------------
function DeleteCookie (name)
{
var exp = new Date();
var cval = GetCookie (name);
exp.setTime (exp.getTime() - 1); // This cookie is history
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
>> From : Vitaly Vasilchuk 2:5020/400 Wed 12 Apr
>> 00 15:03
<script language="JavaScript">
<!--
// разобрать значение ключа
function extractCookieValue(val)
if ((endOfCookie = document.cookie.indexOf(";", val)) == -1)
endOfCookie = document.cookie.length;
}
return unescape(document.cookie.substring(val, endOfCookie)) ;
}
// чтение ключа
function ReadCookie(cookiename) {
var numOfCookies = document.cookie.length;
var nameOfCookie = cookiename + "=";
var cookieLen = nameOfCookie.length;
var x = 0 ;
while (x <= numOfCookies) {
var y = (x + cookieLen);
if (document.cookie.substring(x, y) == nameOfCookie)
return (extractCookieValue(y));
x = document.cookie.indexOf(" ", x) + 1;
if (x == 0)
break;
}
return "";
}
// создание ключа
// для удаления - expiredays = -1
function createCookie(name, value, expiredays)
var todayDate = new Date();
todayDate.setDate(todayDate.getDate() + expiredays);
document.cookie = name +
"=" +
value +
"; expires=" +
todayDate.toGMTString() +
";"
}
// пример загрузки
function LoadCookies() {
document.forms[0].UserName.value=ReadCookie("UserName");
}
// пример сохранения
function SaveCookies() {
createCookie("UserName", document.forms[0].UserName.value, 30);
}
//-->
</script>
2. пример скрипта запрещения работы правой кнопки мыши.
>> From : Oleg Arkhipov 2:5020/400 Mon 06 Dec
>> 99 11:01
>>From: "Oleg Arkhipov" <arol@hippo.ru>
Hашел в FAQ-Server ( http://zl0ba.cjb.net ) пример скрипта запрещения работы
правой кнопки мыши.
<html>
<head>
<script LANGUAGE="JavaScript1.1">
<!-- Begin
function right(e) {
if (navigator.appName == 'Netscape' &&
(e.which == 3 || e.which == 2)) {
alert("Sorry, you do not have permission to right click.");
return false;
} else if (navigator.appName == 'Microsoft Internet Explorer' &&
(event.button == 2 || event.button == 3)) {
alert("Sorry, you do not have permission to right click.");
return false;
}
return true;
}
document.onmousedown=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
window.onmousedown=right;
// End -->
</script>
</head>
<body>
</body>
</html>
3. Хотелось бы знать как определить и можно ли вообще определить, какая
кнопка нажата у мыши.
>> From : Evgenij Koronin
используй объект event
The Event Object is supported by both Internet Explorer 4.0 and Netscape
(from 3.0). Properties of the event object are available for every event
that occurs on every scriptable object within a document.
event.button
The button property contains an integer value which represents which of the
mouse buttons were used when the event occurred. The possible values are:
Value Button pressed
0 No mouse button pressed
1 Left mouse button pressed
2 Right mouse button pressed
4 Middle button pressed
4. С этим вопросом я зашел несколько из далека. Конкретно, клиенту необходим
интерфей типа WinApp, то есть popupMenu по правой кнопке мыши. Hа
WebClub.ru я нашел кое-что, но там пример на VBScript и через скриплет.
Хотелось бы как-нибудь по проще, по пролетарси, и на JavaScript.
>> From : Evgenij Koronin
Простейший пример:
<script>
<!--
function click() {
if (event.button==2) {
alert(Hello')
}
document.onmousedown=click
///-->
теперь смотри,вместо алерта можно вызывать функцию, по коорой будет
показываться слой с линками (графика или еще что - в нем еще можно подсветку
сделать - это уже отдельный вопрос). В слое короче и будет меню, главное
поиметь координаты мыши через тот же объект event и слой отпозиционировать
на эти координаты. - все. Да - под HH надо будет использовать
document.captureEvent(MOUSEDOWN) - посмотри HH доку, а то ИЕ понимает, что у
документа есть onmousedown, а HH без этого - нет.
И почитай внимательно про event handlers. - в конце функции, по моему надо
возвратить false - тогда само меню оригинальное не будет выдаваться.
Да совсем забыл - различия ИЕ и HH
for IE
event.button
event.x
event.y
for NN
event.which
event.pageX
event.pageY
5.Hе мог бы ты привести пример скриптика, который бы текстом писал online
или offline?
>> From : Evgenij Koronin 2:5020/400 Mon 27 Mar
>> 00 19:52
Как два пальца - вот, у меня пишет
<html>
<head><title> Online test </title>
</head>
<body>
Internet Explorer in <B>
<script language="javascript1.2">
<!--
if (document.all)
document.write(navigator.onLine?"online":"offline");
// -->
</script>
</B> mode
</body>
</html>
6. Распечатка страницы из кода
>>From: Nikolay Pichtin
Это попробуйте.
<SCRIPT>
function displayPrintButton() {
if ((navigator.appName.indexOf("Netscape") > -1 &&
parseInt(navigator.appVersion) >= 4) ||
(navigator.appName.indexOf("Microsoft") > -1 &&
parseInt(navigator.appVersion) >= 4) ) {
document.write
("<FORM><INPUT TYPE=button VALUE='Print'
("<FORM>onClick='printCurrentPage();'></FORM>");
}
}
function printCurrentPage() {
if (navigator.appName.indexOf("Microsoft") > -1 &&
navigator.appVersion.indexOf("5.") == -1) {
// IE4
OLECMDID_PRINT = 6;
OLECMDEXECOPT_DONTPROMPTUSER = 2;
OLECMDEXECOPT_PROMPTUSER = 1;
WebBrowser =
'<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0
CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER);
WebBrowser1.outerHTML = "";
}
else {
// N4 IE5
window.print();
}
}
displayPrintButton();
</SCRIPT>
FAQ III-2. Browser, mouse buttons, cookies, new windows etc.
7. Как определить - какою у юзера браузер?
>> From : Artem Babadzhanyants
>Как определить - какою у юзера браузер?
// Browser propeties check library. Version 1.02
// (C) Zalog 2000. Permission granted to reuse and distribute.
// e-mail: zalog@pyramid-studio.com
function Browser(){
this.checkScreen=Browser_checkScreen;
this.getCookieVal=Browser_getCookieVal;
this.fixCookieDate=Browser_fixCookieDate;
this.getCookie=Browser_getCookie;
this.setCookie=Browser_setCookie;
this.deleteCookie=Browser_deleteCookie;
this.getHostName=Browser_getHostName;
this.getHostAddress=Browser_getHostAddress;
this.agent=navigator.userAgent.toLowerCase();
(navigator.appName)?this.name=navigator.appName:this.name=null;
(navigator.appCodeName)?this.codeName=navigator.appCodeName:this.codeName=nul
l;
(navigator.securityPolicy)?this.securityPolicy=navigator.securityPolicy:this.
securityPolicy=null;
this.versionHi=parseInt(navigator.appVersion);
this.version=parseFloat(navigator.appVersion);
if(navigator.cpuClass){
this.cpu=navigator.cpuClass.toLowerCase();
this.cpuClass="Unknown CPU class, including Sun SPARC";
if(navigator.cpuClass.indexOf("x86")!= -1) this.cpuClass="Intel processor";
if((navigator.cpuClass.indexOf("68k")!=
-1)||(navigator.cpuClass.indexOf("ppc")!= -1)) this.cpuClass="Motorola
processor";
if(navigator.cpuClass.indexOf("alpha")!= -1) this.cpuClass="Digital
processor";
}else{
this.cpu=null;
this.cpuClass=null;
}
(navigator.onLine )?this.onLine=navigator.onLine:this.onLine=null;
if(navigator.cookieEnabled)this.cookieEnabled=navigator.cookieEnabled;
else{
var expdate=new Date();
expdate.setTime(expdate.getTime()+(365*24*60*60*1000));
this.fixCookieDate(expdate);
this.setCookie("test_js","safe to delete",expdate,"/");
(this.getCookie("test_js"))?this.cookieEnabled=true:this.cookieEnabled=fals
e;
this.deleteCookie("test_js","/");
}
if(navigator.language)this.language=navigator.language;
else if(navigator.browserLanguage)this.language=navigator.browserLanguage;
else this.language=null;
(navigator.systemLanguage)?this.systemLanguage=navigator.systemLanguage:this.
systemLanguage=null;
(navigator.userLanguage)?this.userLanguage=navigator.userLanguage:this.userLa
nguage=null;
this.Netscape=((this.agent.indexOf('mozilla')!=-1)&&(this.agent.indexOf('spoo
fer')==-1)&&(this.agent.indexOf('compatible')==-1)&&(this.agent.indexOf('opera'
)==-1)&&(this.agent.indexOf('webtv')==-1));
this.Netscape2=(this.Netscape&&(this.versionHi==2));
this.Netscape3=(this.Netscape&&(this.versionHi==3));
this.Netscape4=(this.Netscape&&(this.versionHi==4));
this.Netscape4up=(this.Netscape&&(this.versionHi>=4));
this.Netscape5=(this.Netscape&&(this.versionHi==5));
this.Netscape5up=(this.Netscape&&(this.versionHi>=5));
this.NavigatorOnly=(this.Netscape&&((this.agent.indexOf(";nav")!=-1)||(this.
agent.indexOf("; nav")!=-1)));
this.IE=(this.agent.indexOf("msie") != -1);
this.IE3=(this.IE&&(this.versionHi<4));
this.IE4=(this.IE&&(this.versionHi==4)&&(this.agent.indexOf("msie
5.0")==-1));
this.IE4up=(this.IE&&(this.versionHi>=4));
this.IE5=(this.IE&&(this.versionHi==4)&&(this.agent.indexOf("msie
5.0")!=-1));
this.IE5up=(this.IE&&!this.IE3&&!this.IE4);
if(this.IE5){
this.versionHi=parseInt(this.agent.substr(this.agent.indexOf("5.")));
this.version=parseFloat(this.agent.substr(this.agent.indexOf("5.")));
}
this.AOL=(this.agent.indexOf("aol")!= -1);
this.AOL3=(this.AOL&&this.IE3);
this.AOL4=(this.AOL&&this.IE4);
this.Opera=(this.agent.indexOf("opera")!=-1);
this.WebTV=(this.agent.indexOf("webtv")!=-1);
if(this.Netscape2||this.IE3)this.jsVersion=1.0;
else if(this.Netscape3||this.Opera)this.jsVersion=1.1;
else if((this.Netscape4&&(this.version<=4.05))||this.IE4)this.jsVersion=1.2;
else if((this.Netscape4&&(this.version>4.05))||this.IE5)this.jsVersion=1.3;
else if(this.Netscape5)this.jsVersion=1.4;
else if(this.Netscape&&(this.versionHi>5))this.jsVersion=1.4;
else if(this.IE&&(this.versionHi>5))this.jsVersion=1.3;
else if(_jsVersion>1.3)this.jsVersion=_jsVersion;
else this.jsVersion=0.0;
this.vbVersion=vbVer;
this.osWin=((this.agent.indexOf("win")!=-1)||(this.agent.indexOf("16bit")!=-1
));
this.osWin95=((this.agent.indexOf("win95")!=-1)||(this.agent.indexOf("windows
95")!=-1));
this.osWinCE=((this.agent.indexOf("wince")!=-1)||(this.agent.indexOf("windows
ce")!=-1)||(this.agent.indexOf("win ce")!=-1));
this.osWin16=((this.agent.indexOf("win16")!=-1)||(this.agent.indexOf("16bit")
!=-1)||(this.agent.indexOf("windows 3.1")!=-1)||(this.agent.indexOf("windows
16-bit")!=-1));
this.osWin31=((this.agent.indexOf("windows
3.1")!=-1)||(this.agent.indexOf("win16")!=-1)||(this.agent.indexOf("windows
16-bit")!=-1));
this.osWin98=((this.agent.indexOf("win98")!=-1)||(this.agent.indexOf("windows
98")!=-1));
this.osWinNT=((this.agent.indexOf("winnt")!=-1)||(this.agent.indexOf("windows
nt")!=-1));
this.osWin2000=(this.osWinNT||(this.agent.indexOf("nt 5.0")!=-1));
this.osWin32=(this.osWin95||this.osWinNT||this.osWin98||this.osWin2000||((thi
s.versionHi>=4)&&(navigator.platform=="Win32"))||(this.agent.indexOf("win32")!=
-1)||(this.agent.indexOf("32bit")!=-1));
this.osOS2=((this.agent.indexOf("os/2")!=-1)||(navigator.appVersion.indexOf("
OS/2")!=-1)||(this.agent.indexOf("ibm-webexplorer")!=-1));
this.osMac=(this.agent.indexOf("mac")!=-1);
this.osMac68k=(this.osMac&&((this.agent.indexOf("68k")!=-1)||(this.agent.inde
xOf("68000")!=-1)));
this.osMacPPC=(this.osMac &&
((this.agent.indexOf("ppc")!=-1)||(this.agent.indexOf("powerpc")!=-1)));
this.osSun=(this.agent.indexOf("sunos")!=-1);
this.osSun4=(this.agent.indexOf("sunos 4")!=-1);
this.osSun5=(this.agent.indexOf("sunos 5")!=-1);
this.osSuni86=(this.osSun&&(this.agent.indexOf("i86")!=-1));
this.osIrix=(this.agent.indexOf("irix")!=-1);
this.osIrix5=(this.agent.indexOf("irix 5")!=-1);
this.osIrix6=((this.agent.indexOf("irix
6")!=-1)||(this.agent.indexOf("irix6")!=-1));
this.osHPUx=(this.agent.indexOf("hp-ux")!=-1);
this.osHPUx9=(this.osHPUx&&(this.agent.indexOf("09.")!=-1));
this.osHPUx10=(this.osHPUx&&(this.agent.indexOf("10.")!=-1));
this.osAIX=(this.agent.indexOf("aix")!=-1);
this.osAIX1=(this.agent.indexOf("aix 1")!=-1);
this.osAIX2=(this.agent.indexOf("aix 2")!=-1);
this.osAIX3=(this.agent.indexOf("aix 3")!=-1);
this.osAIX4=(this.agent.indexOf("aix 4")!=-1);
this.osLinux=(this.agent.indexOf("inux")!=-1);
this.osSCO=(this.agent.indexOf("sco")!=-1)||(this.agent.indexOf("unix_sv")!=-
1);
this.osUnixWare=(this.agent.indexOf("unix_system_v")!=-1);
this.osMPRAS=(this.agent.indexOf("ncr")!=-1);
this.osReliant=(this.agent.indexOf("reliantunix")!=-1);
this.osDEC=((this.agent.indexOf("dec")!=-1)||(this.agent.indexOf("osf1")!=-1)
||(this.agent.indexOf("dec_alpha")!=-1)||(this.agent.indexOf("alphaserver")!=-1
)||(this.agent.indexOf("ultrix")!=-1)||(this.agent.indexOf("alphastation")!=-1)
);
this.osSinix=(this.agent.indexOf("sinix")!=-1);
this.osBSD=(this.agent.indexOf("bsd")!=-1);
this.osFreeBSD=(this.agent.indexOf("freebsd")!=-1);
this.osOpenBSD=(this.agent.indexOf("openbsd")!=-1);
this.osNetBSD=(this.agent.indexOf("netbsd")!=-1);
this.osBSDi=(this.agent.indexOf("bsdi")!=-1);
this.osUnix=((this.agent.indexOf("x11")!=-1)||this.osSun||this.osIrix||this.o
sHPUx||this.osSCO||this.osUnixWare||this.osMPRAS||this.osReliant||this.osDEC||t
his.osSinix||this.osAIX||this.osLinux||this.osBSD||this.osFreeBSD);
this.osVMS=((this.agent.indexOf("vax")!=-1)||(this.agent.indexOf("openvms")!=
-1));
this.hostName=null;
this.hostAddress=null;
this.hostName=this.getHostName();
this.hostAddress=this.getHostAddress();
this.checkScreen();
}
function Browser_checkScreen(){
if (top.screen){
(screen.pixelDepth)?this.pixelDepth=screen.pixelDepth:this.pixelDepth=null;
(screen.colorDepth)?this.colorDepth=screen.colorDepth:this.colorDepth=null;
if(screen.width&&screen.height){
this.screenWidth=screen.width;
this.screenHeight=screen.height;
this.screenResolution=this.screenWidth+"x"+this.screenHeight;
}else{
this.screenWidth=null;
this.screenHeight=null;
this.screenResolution=null;
}
if(screen.availWidth&&screen.availHeight){
this.availWidth=screen.availWidth;
this.availHeight=screen.availHeight;
this.availResolution=this.availWidth+"x"+this.availHeight;
}else{
this.availWidth=null;
this.availHeight=null;
this.availResolution=null;
}
if(this.screenWidth&&this.screenHeight&&this.colorDepth)this.Resolution=thi
s.screenWidth+"x"+this.screenHeight+"x"+this.colorDepth;
else this.Resolution = null;
}else{
this.pixelDepth=null;
this.colorDepth=null;
this.availWidth=null;
this.availHeight=null;
this.availResolution=null;
this.screenWidth=null;
this.screenHeight=null;
this.screenResolution=null;
this.Resolution=null;
}
if(window.innerWidth)this.innerWidth=window.innerWidth;
else{
if(document.body){
if(document.body.clientWidth) this.innerWidth=document.body.clientWidth;
}else this.innerWidth=null;
}
if(window.innerHeight)this.innerHeight=window.innerHeight;
else{
if(document.body){
if(document.body.clientHeight)this.innerHeight=document.body.clientHeight
;
} else this.innerHeight=null;
}
(this.innerWidth&&this.innerHeight)?this.innerResolution=this.innerWidth+"x"+
this.innerHeight:this.innerResolution=null;
(window.outerWidth)?this.outerWidth=window.outerWidth:this.outerWidth=null;
(window.outerHeight)?this.outerHeight=window.outerHeight:this.outerHeight=nul
l;
(this.outerWidth &&
this.outerHeight)?this.outerResolution=this.outerWidth+"x"+this.outerHeight:thi
s.outerResolution=null;
(window.offscreenBuffering)?this.offscreenBuffering=window.offscreenBuffering
:this.offscreenBuffering=null;
if(window.frameRate)this.frameRate=window.frameRate;
else this.frameRate=null;
}
function Browser_getCookieVal(offset){
var endstr=document.cookie.indexOf(";",offset);
if(endstr==-1)endstr=document.cookie.length;
return unescape(document.cookie.substring(offset,endstr));
}
function Browser_fixCookieDate(date){
var base=new Date(0);
var skew=base.getTime();
if(skew>0)date.setTime(date.getTime()-skew);
}
function Browser_getCookie(name){
var arg=name+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while(i<clen){
var j=i+alen;
if(document.cookie.substring(i,j)==arg)return this.getCookieVal(j);
i=document.cookie.indexOf(" ",i)+1;
if(i==0)break;
}
return null;
}
function Browser_setCookie(name,value,expires,path,domain,secure){
document.cookie=name+"="+escape(value)+((expires)?";
expires="+expires.toGMTString():"")+((path)?"; path="+path:"")+((domain)?";
domain="+domain:"")+((secure)?"; secure":"");
}
function Browser_deleteCookie(name,path,domain){
if(this.getCookie(name))document.cookie=name+"="+((path)?";
path="+path:"")+((domain)?"; domain="+domain:"")+"; expires=Thu, 01-Jan-70
00:00:01 GMT";
}
function Browser_getHostName(){
if(navigator.appName.lastIndexOf('Netscape')!=-1)
if(navigator.javaEnabled()==1){
window.onerror=null;
hostAddress=java.net.InetAddress.getLocalHost();
return(hostAddress.getHostName());
}
return null;
}
FAQ IV. HTML tags, FORMs, FRAMEs
1.Есть фоpма в котоpой два меню выбоpа - пеpвое гpуппа товаpов, втоpое - список
товаpов
Вопpос как сделать что-бы во втоpом меню выходили только товаpы конкpетной
гpуппы товаpов ?
>>From: "Michael A. Kangin" <mak@complife.net>
Приведу состряпаннную програмку. Разберешься?
-+---------------------
<html>
<script>
var tovar = new Array(4)
tovar[1]= new Array(
"Гробы",
"Венки",
"Катафалки",
"Отпевания",
"Памятники",
"Кресты"
)
tovar[2]=new Array(
"Компьютеры большие",
"Компьютеры маленькие",
"Винтчестеры",
"Каркуляторы"
)
tovar[3]=new Array(
"Окна",
"Двери",
"Слова",
"Тараканы",
"Жуки",
"Клопы"
)
tovar[4]=new Array(
"Шампунь",
"Крем",
"Мазь"
)
function update_s2()
{
n=document.f1.s1.selectedIndex + 1;
document.f1.s2.length=tovar[n].length;
for(i=0; i<tovar[n].length; i++) document.f1.s2[i].text = tovar[n][i];
}
</script>
<body>
<form name="f1">
<table border=0 width=100%>
<tr valign=top><td>
Фирма<br>
<select name="s1" size=4 onChange="update_s2()">
<option selected>Бензенчук и К
<option>IBM
<option>Microsoft
<option>ПРоктер и гембл
</select>
</td>
<td>
Товар:<br>
<select name="s2" size=7 width=200>
<script>
for(i=0; i<tovar[1].length; i++) document.writeln('<option>'+tovar[1][i]);
</script>
</select>
</td></tr>
</table>
</form>
</body>
</html>
-+-----------------------------------------------
Работает как минимум в MIE5 и Hетскапе 4.08. Хотя МИЕ как-то странно реагирует
на
изменение значений, передергивает все поле выбора. Может, пофиксить и можно, не
разбирался.
2. можно ли вызывать яваскpипт помещенный в один файлик (фpейм) из дpугих
фpеймов... если можно, то как?
>> From : Artem Babadzhanyants 2:5030/922 Sat 13 Nov 99 18:23
Текст скрипта пишешь в отдельном файле, а на страничке пишешь:
<HTML>
<SCRIPT LANGUAGE="JavaScript" SRC="b5bbs.js">
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="link.js">
</SCRIPT>
</HTML>
т.е мои скрипты находятся в файлах b5bbs.js и link.js
3. Есть 2 фpейма баннеp и основной, надо зделать так чтобы пpи клике на
кнопкy(pисyнок,ссылкy)в вpейме с банеpом фpейм закpылся и остался
только основной. Помогите плиз..
>> From : Alexander Hritonenkov 2:5030/978.33 Sat 04 Mar
>> 00 15:05
<A HREF="..." TARGET="_parent">...</A>
или
<A HREF="..." TARGET="_top">...</A>
4. Вот так получаются ЧАСЫ
>> From : Anton Agapov 2:5030/854.22 Mon 27 Mar
>> 00 15:48
<FORM NAME="clock">
<INPUT NAME="face" TYPE="TEXT" VALUE="hh:mm:ss" SIZE=6>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
<!--
updateClock();
function updateClock() {
var time = new Date();
var hours = time.getHours();
var minutes = time.getMinutes();
var seconds = time.getSeconds();
document.clock.face.value =
((hours < 10) ? '0' + hours : hours) +
':' + ((minutes < 10) ? '0' + minutes : minutes) +
':' + ((seconds < 10) ? '0' + seconds : seconds);
setTimeout("updateClock()",1000);
}
//-->
</SCRIPT>
<p>
5.Как сделать сабж, чтобы после нажатия на кнопку "Submit" поля формы
проверялись ява-скриптом, а потом только, если все формы заполнены так
так надо, данные передавались серверу ?
>> From : Vitaly Vasilchuk 2:5020/400 Fri 07 Apr
>> 00 15:02
В html'е, в форме, кнопка Submit, должна быть описана следующим образом
-+-------------------------------
<input type="button" value="Отправить"
onclick="ConfirmBox(this.form, 'Вы действительно хотите отправить
запрос?')">
-+-------------------------------
а вот скрипт
-+-------------------------------
function ConfirmBox(f, message) {
// проверка поля Sum
if (f.Sum.value=="0") {
// выводим сообщение об ошибке
alert('Hеобходимо выбрать одну из задач.');
// возвращаем фокус на форме в это место
f.cb_MU.focus();
return false;
}
// вывод запроса
if (confirm(message)) {
// если пользовать топчет "Yes" - отправляем
f.submit(); <-- сам трюк
return true;
}
else
return false;
}
6.
> Есть проблема: нужно чтобы один слой (div или layer) показывался над
> другим слоем с формой. Всё бы ничего, но <select> на нижнем слое всё
> время вылазит поверх верхнего слоя.
From: "Serge Neroznaque" <serge@cookietown.net>
1. Про windowed controls (из разных сообщений... поэтому малость хаотично)
Видимый OBJECT, а также SELECT и IFRAME -- это т. н. windowed controls, они
не совсем полноценные участники документа. Они окна внутри окна браузера и
поэтому будут
выводиться поверх других элементов.
Изменяя zIndex меняется только положение таких элементов
относительно друг друга. Для всех остальных -- они всегда
on top.
Их можно прятать меняя visibility, но это не совсем то.
В IE4 windowed controls не наследуют значение display и
visibility и остаются видимыми. Поэтому в IE4 нужно
стараться избегать приемов с наложениями слоев с windowed
controls.
Hачиная с версии эксплорера 5.5 -- IFRAME стал windowless
и таким образом поддерживает CSS атрибут z-index.
А вот в случае Flash это возможно. Hо только благодаря
его разработчикам.
Для эксплорера:
<OBJECT>
<PARAM name="wmode" value="opaque">
</OBJECT>
Для остальных:
<EMBED wmode="opaque"></EMBED>
Hадейсь, понятно в чем именно фича, и что остальные атрибуты
опущены.
7.Кто-нибудь знает, как проиграть wav файл в Internet Explorere?
(требуется звук при наведении мыши на объект)
>> From : Raidillon Eaurouge 2:5020/400 Sun 01 Oct 00 02:00
Проверил в win98, IE5.0 (5.00.2614.3500)...
Работает!
<sample runsInIE5_0="yes">
<HTML>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var strOver = "1.wav";
var strClick = "2.wav";
var a = new Array("never", "say", "die");
for (var i = 0; i < a.length; i++)
document.writeln('<p><a href="#"'
+ ' onmouseover="soundIt(false)"'
+ ' onclick="soundIt(true)">'
+ a[i] + '</a></p>');
function soundIt(cause)
{
sounder.src = (cause ? strClick : strOver);
}
//-->
</SCRIPT>
<bgsound id="sounder"/>
</BODY>
</HTML>
</sample>
>>From: Andrew Rousev
Из ClientGuide JS1.3:
*JavaScript Methods for Controlling LiveAudio*
LiveAudio provides the following major JavaScript controlling methods. For
these methods to be available to JavaScript (and the web page), you must embed
a LiveAudio console (any console will do, it can even be hidden) somewhere on
your page.
play({loop[TRUE, FALSE or an INT]}, '{url_to_sound}')
pause()
stop()
StopAll()
start_time({number of seconds})
end_time({number of seconds})
setvol({percentage number - without "%" sign})
fade_to({volume percent to fade to, without the "%"})
fade_from_to({volume % start fade}, {volume % end fade})
start_at_beginning()
stop_at_end()
The following JavaScript state indication methods do not control the LiveAudio
plug-in, but they give you information about the current state of the plug-in:
IsReady
IsPlaying
IsPaused
GetVolume
-+-------
Using the LiveAudio LiveConnect Methods
One example of using JavaScript to control a LiveAudio plug-in is to have
JavaScript play a sound. In the following example, all of the HTML is needed to
make the plug-in play a sound.
<HTML><BODY>
<EMBED SRC="sound1.wav" HIDDEN=TRUE>
<A HREF="javascript:document.embeds[0].play(false)">Play the sound now!</A>
</BODY></HTML>
FAQ V. Dynamic HTML, LAYERs, DIVs, DOM, CSS
1. Хотелось бы не забивать тэги JavaScript-овскими onMouseOver="..." и т.п., а
просто цеплять CSS к документу и все.
From "Raidillon Eaurouge" <nero@iptelecom.net.ua> wrote in message
<style>
.umm {
behavior: url('umm.htc')
}
</style>
<component>
<implements>
<attach event="onmouseover" onevent="over()" />
<attach event="onmouseout" onevent="out()" />
<attach event="onclick" onevent="clika()" />
</implements>
</component>
> А если уже прописана куча частных случаев onmouseover() и onclick(), но
хочется
> ко всем сразу добавить и onfocus(), будет ли работать такая конструкция:
> <component>
> <implements>
> <attach event="onfocus" onevent="this.blur()" />
> </implements>
Будет работать, но в компонентах нужно использовать не "this",
а "element" для обращения к своим свойствам и методам -- element.blur().
почитать можно в MSDN - DHTML Behaviors in Internet Explorer 5
2.RR> Hадеюсь, что не ошибся эхой. Как создать пунктик "Сделать эту
2.RR> страницу
RR> стартовой"?
From : Andrey Kubakh
<a href="#"
onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://
www.твой_урл.ru/');">Сделать стартовой страницей</a>
From: Nikolay Levashko
> Задача в двух вариантах:
> Вопрос: как переписать для вар.1 кусок текста, а для вар.2 текст в
> строке таблицы при нажатии соотв. ссылки. Hадо для NN!!
> Для IE все вроде просто: для вар.2 использовать innerHTML, а для вар.1
> тоже есть какая-то фишка поиска и замены фрагмента текста. А вот как с
> NN быть?
Я делал это след образом:
Помещаешь все эти тексты в слои (<div>), каждый в свой слой.
Чтобы работало и там и там, пишешь position:absolute.
Чтобы вставлять текст пишешь:
для IE:
document.имяслоя.innerHTML=...
для NN:
document.имяслоя.open();
document.имяслоя.write(...);
document.имяслоя.close();
3.
> Подскажите, пожалуйста, как организовать на эхотаге
> чтение html-файла и вывод его содержимого в
> составе текущего документа?
From Raidillon Eaurouge aka Serge Neroznaque:
Решение #1. Самое простое. Когда-то уже постил его в эту эху.
Работает только в ИЕ5.0 и выше.
<HTML xmlns:dl>
<HEAD>
<SCRIPT LANGUAGE="JScript">
function commenceDownload(strURL)
{
daGiver.startDownload(strURL, onDownloadComplete)
}
function onDownloadComplete(contents)
{
tgt.innerHTML = contents;
}
</SCRIPT>
</HEAD>
<BODY>
<dl:datagiver id="daGiver" style="behavior:url(#default#download)"/>
<div id="tgt"></div>
<input type="button" value="Go" onclick="commenceDownload('some_page.htm')">
</BODY>
</HTML>
Здесь используется функциональность встроенного HTML компонента "download".
Выбор параметра для функции commenceDownload -- на ваше усмотрение. То, куда
записывается contents в обработчике onDownloadComplete, опять же -- куда вам
нужно. Вот и все.
Решение #2. Использование возможностей браузера по работе с XML.
Работает только в ИЕ5.0 и выше. Hо может требоваться также серверная
функциональность, если данные -- динамические.
Hапример, просмотр какого-либо списка определенными порциями без
перезагрузки страницы. Отправка данных из формы без перезагрузки
страницы (только если вы файл не отправляете) и другие задачи для
отправки/получения без перезагрузки страницы.
Решение #3. Построение собственной системы RPC. Опять же на базе XML
и IE5+. Без серверной части не обойтись.
Решение #4. Использование MS Remote Scripting. Работает во всех браузерах, в
которых поддерживается Java. Апплет выступает как клиентский прокси для
удаленного вызова методов на сервере. Hеобходима серверная часть, да еще на
базе IIS4/ASP.
Документацию по Remote Scripting см.
http://msdn.microsoft.com/scripting/remotescripting/rsdocs.htm
Оттуда же можно загрузить компоненты для работы с этой технологией.
Решение #5. Hаписать собственный Java-апплет, который будет либо загружать
ресурсы, либо вызывать скрипты/методы на сервере.
4. Behavior для смены цвета ячеек
> Как скpиптом делать сабж? Смысл в том, чтобы
> именно щелчком по ячейке в ней менялся стиль(цвет или pазмеp фонта и
> пp.),
> а в остальных ячейках стили возвpащали пеpвоначальное значение.
> Щелчок по дpугой ячейке - и все по-новому.
From: "Serge Neroznaque" <serge@cookietown.net>
1) Hаписать attached behavior и поместить его в файл
по имени kliker.htc
<component>
<implements>
<attach event="ondocumentready" onevent="initer()" />
<attach event="onfocus" onevent="hilite()" />
<attach event="onblur" onevent="fade()" />
</implements>
<SCRIPT LANGUAGE="JScript">
function initer()
{
element.tabIndex = 0;
fade();
}
function hilite()
{
element.style.backgroundColor = "red";
}
function fade()
{
element.style.backgroundColor = "silver";
}
</SCRIPT>
</component>
2) Создать HTML файл создать стиль и нарисовать таблицу в нем
<style>
#kliker TD {
behavior: url("kliker.htc")
}
</style>
<table border="1" width="100%" id="kliker">
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
>Как на javascript реализовать оператор из vbscript:
>on error resume next
From: "Dmitry Chekunov" <nika@dol.ru>
Возможно -- так: window.onerror=null;
From: "Vladimir Romanovich" <teo@on.ru>
try {
/* здесь программа */
} catch(e) {
/* здесь обработка ошибок */
}
//----------------------
From: myr@south.net.ru (Raoul & Natalia Nakhmanson-Kulish)
>7.12. Есть ли в JS функция, которая бы брала сценарий из внешнего файла?
>Как грамотно пользоваться внешними скриптами?
>Почему нельзя использовать внешние скрипты вместо SSI для вывода текста?
Внешние скрипты имеют кучу преимуществ перед внутренними - они
кэшируются в бродилке, позволяют писать библиотеки стандартных функций
для использования на нескольких страничках, не загромождают код HTML.
Hо есть у них и недостатки - они плохо поддерживаются старыми
бродилками, кроме того, при вызове функции из внешнего скрипта мы не
можем быть уверены в том, что этот скрипт загрузился - в противном
случае будет выдано сообщение об ошибке. Особенно плачевно
заканчивается использование лентяями внешних скриптов вместо SSI для
вывода информации в документ (document.write).
Поэтому грамотный метод использования внешних скриптов такой.
В <head> документа, выше всех остальных внешних и внутренних скриптов
пишется:
<script language="JavaScript" type="text/javascript"><!--
var jsLoaded=false;
//--></script>
Внешний скрипт вставляется так:
<script language="JavaScript1.2" src="myscript.js"
type="text/javascript"></script>
Обратите внимание на параметр language - там стоит JavaScript1.2
вместо простого JavaScript для того, чтобы старые бродилки не пытались
загрузить то, что они все равно не поймут.
В файле myscript.js последней строчкой должно стоять:
jsLoaded=true;
Затем при необходимости использования функций из внешнего скрипта мы
поступаем так:
а) В блоке JavaScript:
<script language="JavaScript"><!--
.....
// тили-тили
// трали-вали
if (jsLoaded) {
// это дело мне по силе
// откажусь теперь едва ли
} else {
// это мы не проходили
// это нам не задавали
}
.....
//--></script>
б) При вызове функции по событию в теге HTML:
<a href="page.html" onClick="return (jsLoaded)?externalFunction(...):true;">
//--------------
From: "Vladimir Romanovich" <teo@on.ru>
> Хочу сделать, при нажатии пользователем F1 выскакивало бы окно помощи
> просто новое окно в котором бы была какая-то справка).
> Для этого использую событие сабж.
> Hо вот только при нажатии F1 выскакивает еще и help встроенный в IE.
> Можно как-нибудь JavaScript-ом сделать чтобы эта microsoft-овская помощь
не
> выскакивала.
<BODY onhelp="window.open('help.htm','help'); return false;">
Hужно указать, что системный хелп уже не нужен.
//----------------
From: "Peter B. Shalimoff" <vshalim@home.ru>
alexander beckmansurov <alexander.beckmansurov@f53.n5061.z2.fidonet.org>
пишет:
> еще вопрос: как в JS форматировать вывод: вместо 5.8 выводить 5.80 ?
function strprep(src, prepChr, cnt, append)
/*
* "Выравнивает" строку символом.
* IN: src - исходная строка.
* prepChr - символ-выравниватель.
* cnt - до какой длины выровнять.
* append - если true, то символ добавляется
* в конец строки, иначе - в начало.
* OUT: выровненная строка.
*/
{
var q = src.length;
if ( q >= cnt ) return src;
for (var i=q; i<cnt; i++)
{
if ( append )
src += prepChr;
else
src = prepChr + src;
}
return src;
}
function round (numb, precis)
/*
* Округляет число.
* IN: numb - число.
* precis - кол-во знаков после запятой.
* OUT: округленное число в виде строки.
*/
{
// проверки всякие. eval() делается для того,
// чтобы можно было использовать не просто числа,
// а какие-нить numeric expressions в кач-ве аргументов
// функции, например:
// var e = round("3+5/367");
// var z = round("0xdeadbeef");
precis = parseInt(eval(precis));
if ( isNaN(precis) || precis<0 ) precis = 2;
numb = parseFloat(eval(numb));
if ( isNaN(numb) ) {
return "0"+(precis>0?"."+strprep("0","0",precis,true):"");
}
var numb_int = parseInt(numb); // целая часть.
var numb_fract = numb - numb_int; // дробная часть.
// взяли нужное кол-во знаков в дробной части и округлили.
var fract_rnd = Math.round(numb_fract * Math.pow(10, precis));
// на случай переноса в старший разряд.
numb_int = parseInt(numb_int + fract_rnd/Math.pow(10, precis));
if ( numb_int > parseInt(numb) ) fract_rnd = 0;
var rc = numb_int + (precis>0 ?
"."+strprep(""+Math.abs(fract_rnd),"0",precis,true) : "");
// если надо получить число в виде числа :), то предыдущие
// 3 строчки меняем на:
// var rc = numb_int + fract_rnd/Math.pow(10, precis);
return rc;
}
все там работает, проверено раз дцать еще несколько лет назад. Был оставлен
один "баг" в качестве Вашего "домашнего задания", но, судя по этому письму,
мне придется самому его исправлять. :) Так вот, в функции round есть такое:
// на случай переноса в старший разряд.
numb_int = parseInt(numb_int + fract_rnd/Math.pow(10, precis));
if ( numb_int > parseInt(numb) ) fract_rnd = 0;
-+--------------^
Так вот, оператор > ("больше") надо заменить на != ("не равно"), чтобы
правильно работало и с отрицательными числами.
//--------------------------
From : Alexander Umnikov 2:5026/49.62
Д> В документе пишу команду:
Д> window.close().
Д> Появляется запрос на подтверждение закрытия окна.
Д> Как сделать, чтобы окно закрывалось сразу без подтверждения?
Если окно открыто скриптом, то оно скриптом закрывается без окошек, иначе -
облом.
//-----------------------------
From: "Peter B. Shalimoff" <vshalim@home.ru>
"Stas Devyatovskiy" <Stas.Devyatovskiy@p17.f43.n5004.z2.fidonet.org> wrote:
> Как можно отобpазить image в стиле disabled? (Блекло-сеpые цвета)
> <IMG disabled> только лишь блокиpует события, вpоде onclick, а каpтинку
> отобpажает в исходном ваpианте. Я так полагаю, нужно использовать
> опpеделенный фильтp для этого, но не знаю какой.
<script>
function embossImage(img, clr)
{
if ( null == clr ) clr = "THREEDSHADOW";
img.style.filter="chroma(color=white) mask(color="+clr+")
mask(color="+clr+") dropshadow(color=THREEDHIGHLIGHT,offx=1,offy=1)";
}
</script>
<img src="sample.gif" onmouseover="javascript:embossImage(this);"
//----------------------
From: "Peter B. Shalimoff" <vshalim@home.ru>
"Roman Kondrashin" <rk@office.infodesign.ru> wrote:
> Где-то, не помню точно где, пролетала мессага, как сделать, чтобы в NN
> при
> ошибке скрипта вылетало окошко. Что-то там нужно было поправить или
добавить
> в файле установок. Достало уже набирать javascript:... Поделитесь, кто
> знает.
можно вставить в код такое:
window.onerror = new Function("setTimeout('location=\\'javascript:\\';',
100);");
Итак, что же всё-таки имел в виду я, когда задавал вопрос.
В Netscape\users\...\prefs
в prefs.js
добавить строчку
user_pref("javascript.console.open_on_error", false);
true вместо false
что приведет к автоматическому открытию окна при обнаружении ошибки
ПРИ ВЫПОЛHЕHИИ JavaScript
//---------------------
From : Victor Prylipko 2:4635/4.1 25 Nov 01 01:48:48
Subj : Re: данные из фоpмы записать в файл
YP> Собственно хотелось бы yзнать как pеализовать сабж. И можно ли читать
YP> из файла. Заpанее пpемного благодаpен.
MSIE это умеет:
function Save(FileName, Data)
{ -
var fso = new ActiveXObject("Scripting.FileSystemObject"); -
File = fso.CreateTextFile(FileName, true); -
File.WriteLine(Data); -
File.Close(); -
}
//-------------
From : Denis Balashov 2:5010/103.12 26 Nov 01 18:46:58
Subj : XML and browsers
SD> У IE5.0 и выше есть мощные сpедства pаботы с XML,
SD> включающие в себя подгpузку удаленных XML-документов и автоматический
SD> pазбоp на ноды, с пpедоставлением возможности ходить по деpеву этих
SD> нод.
парсер для XML можно установить и отдельно. Если opera, mozilla и netscape
умеют jscript - будут уметь и работать с XML. Чем это отличается от создания
любого другого ActiveX-объекта?
var source = new ActiveXObject("MSXML2.DOMDocument.3.0");
source.async = false;
source.load(sourceFile);
//----------------------------
From: "Vladimir Romanovich" <teo@on.ru>
> Hужно прочитать код JavaScript, подгружаемый отдельно с сервера с
> помощью:
> <script language="javascript"
> src="http://www.server.com/javascript.js"></script>
>
> Есть ли способ узнать этот код?
Если есть чем читать (мозги), то можно :)
А если скриптом, то юзай activex "WinHttp.WinHttpRequest.5" (предварительно
скачай с мелкософта):
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5");
WinHttpReq.open("POST", http://www.server.com/javascript.js", false);
WinHttpReq.send();
alert(WinHttpReq.responseText);
Ты не рассказал о твоей задаче, так что ответ таков, какой вопрос.
//---------------
From: myr@south.net.ru (Raoul & Natalia Nakhmanson-Kulish)
Allin punchaw qampaq, Gennady Gulevsky!
В твоем письме от Mon, 21 Jan 2002 06:22:01 +0000 (UTC) нам удалось вычитать:
>И я могу извлечь любую ссылку из загруженного документа,
>Если же я загружаю в IFRAME документ, адрес которого имеет вид что-то
>типа
>http://someserver.com/dir/sample.php?t=12345&p=12345,
>то оператор typeof(frames[id_iframe].document) выдает тип "unknown",
>и соответственно, я не могу извлечь из документа никакой ссылки.
Это сделано из соображений безопасности. Обойти - нельзя никак.
//--------------------
From : Evgenij Koronin 2:5030/175.1006 11 Dec 01 10:15:34
VR> a.length (не работает с hash массивами, там надо перебором for(var i
VR> in a) {...})
Потому что нету в JS понятия хэш-массива, а есть объекты с набором свойств,
адресация к которым разрешена как через точку, так и по имени.
var o = new Object();
o.a = 1;
o["b"] = 2;
o.b дает 2, o["a"] дает 1
//------------------
From: "Peter B. Shalimoff" <vshalim@home.ru>
> Вот эта вишка меняет только пеpвую букву:
> msgn=msgn.replace(/a/,'b');
> Как сделать, чтобы меняло все?
msgn = msgn.replace(/a/g, 'b');
From : Paul Kityan 2:5020/2096.7
var a='hello';
while (a.indexOf('l')!=-1)
{
a=a.replace('l','L');
}
//---------------------
From: "Тимошенко Роман" <etltim@energy.tagmet.ru>
Как сделать невидимым курсор?
Как отслеживать выход курсора за границы окна?
//-------------------------
From: myr@south.net.ru (Raoul & Natalia Nakhmanson-Kulish)
>Скажите, какие методы бывают у объекта window.external? В Client-Side
>JavaScript Guide ничего не нашёл, а пока знаю только addFavorite().
MSDN
/workshop/author/dhtml/reference/objects/external.htm
external Object
Allows access to an additional object model provided by host applications of
the Microsoft- Internet Explorer browser components.
Remarks
In a hosting scenario, the object model is defined by the application hosting
the Internet Explorer components (refer to the hosting application for
documentation). For more information about how to implement extensions to the
Dynamic HTML (DHTML) object model, see Browser Overview.
This object is not supported in HTML Applications.
This object is available in script as of Microsoft- Internet Explorer 4.0.
Members
AddChannel
Presents a dialog box that allows the user to either add the channel specified,
or change the channel URL if it is already installed.
AddDesktopComponent
Adds a Web site or image to the Microsoft- Active DesktopЄ.
AddFavorite
Prompts the user with a dialog box to add the specified URL to the Favorites
list.
AutoCompleteSaveForm
Saves the specified form in the AutoComplete data store.
AutoScan
Attempts to connect to a Web server by passing the specified query through
completion templates.
ImportExportFavorites
Imports or exports Favorites information.
IsSubscribed
Returns whether the client subscribes to the given channel.
menuArguments
Returns the window object where the context menu item was executed.
NavigateAndFind
Opens a Web page, and highlights a specific string.
ShowBrowserUI
Opens the specified browser dialog box.
\\---------------------------------------------
From: "Denis Ponomarev" <oz@romsat.kiev.ua>
Pardon.
xxx.style.cursor="Arrow"