…тая проблема - использование оператора уменьшения на единицу в
блоке JavaScript (myVar--), вместо этого используйте оператор "-=" (myVar-=1)
>2.21. Говорят, для поисковиков надо прописать ключевые слова. Что это?
Один из вариантов <meta>, определяющий ключевые слова или краткое описание
документа. Hекоторые поисковые роботы обращают на них внимание, а некоторые не
обращают. Поисковый робот, знаете ли, тоже нам ничем не обязан.
Слова - <meta name="Keywords" content="слово слово слово ...">
Описание - <meta name="Descripton" content="описание документа">
>2.22. В чем отличия <b> и <strong>, <i> и <em> ?
Вообще говоря, никакой браузер не обязан вебмастеру показывать жирные или
курсивные шрифты. Hапример, у консольного браузера их нет. Это уже элементы
верстки, а HTML предназначен не для верстки, а для логической разметки.
<b> и <i> - тэги физического выделения, то есть вы принудительно заставляете
выделять текст каким-то видом шрифта. <strong> и <em> - тэги логического
выделения. Каждый браузер может по-своему выделить текст внутри этих тэгов,
так, как удобно его пользователю. <em> означает выделение, а <strong> означает
усиленное выделение.
Резюме: если вам нужно выделить текст, пользуйтесь <em>. Если вам нужно не
выделить текст, а сделать его курсивом, пользуйтесь <i>.
>2.23. Как сделать таблицу с большим количеством
>произвольно объединенных по вертикали и горизонтали ячеек?
1. Hачертить схему таблицы.
2. Провести до конца пунктирными линиями не доходящие до краев перегородки.
3. Hаписать HTML-код таблицы, представив, что пунктирные линии - это сплошные.
Содержимое и параметры фона и выравнивания ячеек с пунктирными линиями
прописать в той ячейке, что находится сверху и слева.
5. Добавить в <td> каждой такой ячейки ROWSPAN и COLSPAN с параметрами,
равными количеству ячеек, объединяемых по вертикали и горизонтали
соответственно.
6. Удалить пустые пары <td></td>.
>2.24. Как сделать буквицу в начале абзаца без применения картинок?
>Hапример, так:
/\ вот и начался
/__\ мой новый
/ \ абзац!
<table border="0" cellspacing="6" cellpadding="0" align="left">
<tr>
<td bgcolor="#000000"><font size="7" color="#FFFFFF"
style="font-family:sans-serif;font-size:300%;"><b> А </b></font></td>
</tr>
</table>вот и начался мой новый абзац!
Буквица - буква между двумя в <td>.
Параметры bgcolor в <td>, color, size и style в <font> задавать по вкусу ;)
>2.25. Как окружить табличку рамкой нужного цвета?
Это возможно, но если просто прописать bordercolor, то в NN рамка будет
объемная, а в IE - монотонная.
Чтобы рамка была объемной и в IE, и в NN, надо для IE прописать в <table>
параметры bordercolorlight="#RRGGBB" и bordercolordark="#RRGGBB", которые
нужно узнать, открыв страницу в NN, сделав Print Screen, вставив образ экрана
в графический редактор и узнав RGB-цвет светлых и темных "граней" рамки.
Чтобы рамка была монотонной и в IE, и в NN, делаем так:
<table border="0" cellspacing="0" cellpadding="...толщина бордера..."
bgcolor="...цвет бордера...">
<tr>
<td><table width="100%" border="0" bgcolor="...цвет фона...">
...Hаша табличка...
</table></td>
</tr>
</table>
>2.26. Как "разлиновать" табличку тонкими линиями нужного цвета?
<table border="0" cellspacing="0" cellpadding="0" bordercolor="...цвет
линий...">
<tr>
<td><table width="100%" cellspacing="...толщина линий..." border="0">
<tr bgcolor="...цвет фона первой строки...">
...первая строка...
</tr>
<tr bgcolor="...цвет фона второй строки...">
...вторая строка...
</tr>
....
</table></td>
</tr>
</table>
>2.27. Я, к сожалению, употребил тег, который поддерживается только
>в браузере NNN. Что же увидят пользователи других браузеров?
В стандарте можно прочитать, что пользовательские агенты должны игнорировать
неизвестные им теги. Браузеры так и делают.
>2.28. Чтобы HTML-документ выводился в некоторую область внутри
>другого HTML-документа (например, в <div> или в ячейку таблицы)?
>Чтобы <iframe> показывался в Netscape 4.x?
По стандартам HTML 4.0, для встраивания внешних HTML-документов нужно
использовать тег <iframe>. Он имеет такие атрибуты:
src="...URL..." - URL встраиваемого документа
name="..." - имя для того, чтобы прописывать его, как target для
ссылок, которые должны будут загружаться в этот iframe.
width="WWW" - ширина
height="HHH" - высота
marginwidth="XXX" - отступы содержимого iframe от левого и правого
края
marginheight="YYY" - то же, но от верхнего и нижнего края
scrolling="yes|no|auto" - задает наличие или отсутствие полосы
прокрутки. При значении auto полоса прокрутки появляется при
необходимости, если встраиваемый документ не влезает в размер iframe.
В общем случае, отключать скроллинг не рекомендуется.
Тег <iframe> обязательно требует закрывающего тега (</iframe>). Внутри
<iframe>...</iframe> прописывается контент для браузеров, не
поддерживающих этот тег.
К сожалению, NN4 не поддерживает <iframe>. Однако в нем есть иная
возможность встроить один документ в другой, причем так, чтобы внешние
ссылки на <iframe> работали корректно.
Для этого в <head> своей странички вставьте скрипт:
<script language="JavaScript" type="text/javascript"><!--
function chIframe(lnk) {
if (document.layers){
if (document.layers[lnk.target]) {
if (document.layers[lnk.target].origX==undefined) {
document.layers[lnk.target].origX=
document.layers[lnk.target].pageX;
document.layers[lnk.target].origY=
document.layers[lnk.target].pageY;
}
with (document.layers[lnk.target]) {
left=origX;
clip.left=-origX;
top=origY;
clip.top=-origY;
src=lnk.href;
}
}
return false;
} else return true;
}
//--></script>
А iframe пропишите так:
<iframe name="myIframe" src="myiframe.html" width="X" height="Y">
<div id="myIframe"
style="position:relative;width:X;height:Y;include-source:url('myiframe.html');">
Ваш браузер не поддерживает вложения HTML-документов.
ажмите <a href="page1.html" target="myIframe">сюда</a>,
чтобы увидеть документ в новом окне.
</div>
</iframe>
Если вы хотите, чтобы ваша ссылка изменяла содержимое iframe,
пропишите ее так:
<a href="newpage.html" target="myIframe" onClick="return chIframe(this);">
>>> ОТВЕТЫ <<<
Вопросы от незнания CSS
Все эти ответы можно узнать, прочитав стандарты CSS
>3.1. Чтобы был абзацный отступ?
P{margin-top:0;text-indent:5em;}
>3.2. Как подавить подчеркивание ссылок в некоторых местах?
<HEAD>
<STYLE type="text/css"><!--
a.noneline {text-decoration: none;}
--></STYLE>
</HEAD>
После чего применяем этот стиль: <A HREF="ссылка" class="noneline">
>3.3. Как сделать неподчеркнутые ссылки везде?
<HEAD>
<STYLE type="text/css"><!--
a:link {text-decoration:none;}
a:visited {text-decoration:none;}
a:active {text-decoration:none;}
--></STYLE>
</HEAD>
>3.4. Чтобы при наведении мышки на текст с ссылкой
>он поменял цвет или стал подчеркнутым?
<HEAD>
<STYLE type="text/css"><!--
a:hover {color:#RRGGBB;text-decoration:underline;}
--></STYLE>
</HEAD>
Этот код не будет работать в NN4.x.
>3.5. Чтобы фоновая картинка не размножалась по горизонтали
>(по вертикали) при увеличении разрешения экрана?
В стилях документа нужно прописать
<style type="text/css"><!--
body{
background-image:url("...URL картинки...");
background-repeat:...параметр...;
}
--></style>
Допустимые значения параметра:
no-repeat - подавляет размножение
repeat-x - размножение только по горизонтали
repeat-y - размножение только по вертикали
Для совместимости со старыми версиями браузеров рекомендуется
пририсовать к фоновой картинке справа и/или снизу прозрачным (для GIF)
или совпадающим со значением BGCOLOR в <BODY> монотонным (для JPG) фоном
полосы, доведя разрешение картинки в нужном направлении как минимум до
2048 пикселов. "Вес" картинки при этом увеличится незначительно,
поскольку монотонный фон хорошо сжимается.
>3.6. Чтобы задать фоновую картинку для ячейки таблицы?
Параметр background для <td> не рекомендован стандартами HTML и не
поддерживается в Opera. Пользуемся стилями:
<td style="background-image:URL('bg.gif');">
Если мы хотим, чтобы фон не "размножался" по вертикали или горизонтали, то
добавляем в style параметр background-repeat, как описано в ответе на
предыдущий вопрос. Увеличивать размер картинки для совместимости со старыми
браузерами не нужно - они вообще не покажут ее, поскольку не понимают стили.
Если внутри ячейки c фоном мы собираемся использовать таблицы, то в
соответствующих тегах <table> нужно указывать background="" для совместимости
с NN.
>3.7. Как сделать так. чтобы фон странички оставался неподвижным при
>прокрутке?
Это делать не рекомендуется, поскольку прокрутка с неподвижным фоном
выполняется медленнее.
Если уж ни в какую без этого не обойтись, то вот пример странички с
неподвижным фоном в IE3+, NN4+ и Opera:
<html>
<head>
<title>Страничка с неподвижным фоном</title>
<style type="text/css">
<!--
body{background-image:URL('back.gif');background-attachment:fixed;
margin:0px;padding:0px;}
#body{position:absolute;z-index:1;width:100%;}
-->
</style>
<script language="JavaScript1.2">
<!--
var oldScrollX=0;
var oldScrollY=0;
var NN=(((document.layers)?true:false) &&
navigator.appVersion.charAt(0)=="4");
function fixBg() {
if (window.pageXOffset!=oldScrollX || window.pageYOffset!=oldScrollY){
document.layers['bg'].left=oldScrollX=window.pageXOffset;
document.layers['bg'].top=oldScrollY=window.pageYOffset;
}
}
function makeBg() {
if (NN) {
document.layers['bg'] = new Layer(window.innerWidth);
document.layers['bg'].left = 0;
document.layers['bg'].top = 0;
document.layers['bg'].height = window.innerHeight;
document.layers['bg'].background.src = 'back.gif';
document.layers['bg'].visibility = 'show';
document.layers['bg'].zIndex = 0;
document.layers['bg'].document.open();
document.layers['bg'].document.write('<table width="100%" '+
'height="105%" border="0" cellspacing="0" cellpadding="0">'+
'<tr><td> </td></tr></table>')
document.layers['bg'].document.close();
setInterval("fixBg();",100);
}
}
//-->
</script>
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0"
marginwidth="0" marginheight="0" background="back.gif"
bgproperties="fixed" onLoad="makeBg();"><script language="JavaScript1.2"><!--
if (NN) document.write('<div id="body">')
//--></script>
....
....
....
Baш HTML
....
....
....
<script language="JavaScript1.2"><!--
if (NN) document.write('</div><table height="NNNN">'+
// ^^^^
//Здесь пишем высоту странички в пикселах при разрешении 640x480
'<tr><td> </td></tr></table>');
//--></script></body>
</html>
>3.8. Как сделать так, чтобы при наведении мышки какой-либо отличный
>от ссылки элемент (скажем, ячейка таблицы) поменял оформление
>(например, фоновый цвет)
Категорически не рекомендуется пользоваться скриптами типа
<td onMouseOver="...">
В CSS2 псевдокласс :hover может быть применен не только к ссылке, но и
к любому другому элементу. о, к сожалению, IE не поддерживает эту
возможность. Поэтому поступаем так - пишем в стилях:
td{...styles...;behavior:url('td.htc');} /* работает в IE4+ */
td:hover{background-color:#RRGGBB;} /* стандарт CSS2, работает в NN6/Mozilla */
И создаем файл td.htc, в котором пишем:
<public:attach event="onmouseover" onevent="color()"/>
<public:attach event="onmouseout" onevent="restore()"/>
<script language="JavaScript" type="text/javascript"><!--
function color() {runtimeStyle.backgroundColor='#RRGGBB';}
function restore() {runtimeStyle.backgroundColor='';}
Теперь все ячейки таблиц при наведении мышки будут подсвечиваться.
Разумеется, можно использовать td.className:hover и td#idName:hover
для подсветки ячеек определенного стиля или конкретной ячейки.
>>> ОТВЕТЫ <<<
Вопросы от незнания графики
эти темы в конференции офтопичны
>4.1. Что такое чересстрочная и прогрессивная графика,
>почему она лучше обычной и как ее создать?
Чересстрочная графика - это механизм, позволяющий показать грубое приближение
к общему виду картинки до ее полной загрузки. Сохранять в этом формате
всячески рекомендуется, поскольку пользователь сразу получает общее
представление о картинке и при необходимости может отменить ее загрузку,
нажать на ссылку и т.п.
Для создания чересстрочной графики вам понадобится графический редактор,
поддерживающий запись в файл формата GIF89a. Для PhotoShop это называется
"File Export", "GIF89a Export". Должен быть отмечен пункт "Interlace".
Для формата JPEG есть функциональный аналог чересстрочной графики - формат
Progressive JPEG. В PhotoShop экспорт в этот формат достигается пунктом меню
"Save a Copy...", и в опциях JPEG отметить пункт Progressive. Интересно, что
прогрессивный JPEG не только удобнее для юзера, но при том же качестве часто
"весит" меньше, чем стандартный :)
>4.2. Как создать прозрачную графику?
Для создания прозрачной графики вам понадобится графический редактор,
поддерживающий запись в файл формата GIF89a. Для PhotoShop это называется
"File Export", "GIF89a Export", затем пипеткой выделяете тот цвет, который
должен стать прозрачным.
Таким образом, прежде чем сохранять картинку, нужно окрасить всю прозрачную
область в один цвет. PhotoShop, конечно, позволяет сделать прозрачными и
несколько цветов, но при этом эти несколько цветов становятся одним.
Рассказывают, что yдобнее создать альфа-канал, в котоpом и наpисовать
пpозpачность. Та часть изобpажения, котоpая находится под чеpными областями
альфа-канала, бyдет пpозpачной. Сохpанять обычным способом.
Есть и программы типа GIF Constructor Set, которые помогают определить один из
цветов палитры GIF как прозрачный.
>4.3. Как создать анимацию?
GIF-анимация - это последовательная смена картинок. Картинки можно сделать в
любом редакторе, а сами анимации в специальных программах:
а) Gif Construction Set:
* Запустите 'Мастер' в Gif Construction Set:
File / Animation Wizard... и нажмите Next и еще раз Next. Если вы
хотите, чтобы ваша анимация после выполнения остановилась, то
выбирайте Animate once and stop, а если хотите, чтобы она постоянно
работала - Loop Indefinitely. Hажимайте Next.
* Далее выберите качество изображения (фотореалистичное, рисованное).
* Теперь надо выбрать промежуток времени между сменой кадров.
* Теперь выбираете из каталогов GIF'ы для анимации.
* Hажимайте Done.
* Сохраните.
* Для проверки нажмите View или просмотрите анимацию в браузере.
б) MS GIF Animator:
* Hажмите на панельке кнопку Open (Ctrl+O) и загрузите первый кадр.
* Используя кнопку Insert (Ctrl+I), вставьте остальные кадры и
разместите их в нужном порядке, перетаскивая мышью, используя
Clipboard или клавиши со стрелками на панели (они дублируются
клавиатурными стрелками).
* Для повторяющейся анимации включите опцию Animation / Looping.
При этом можно задать количество повторов или включить опцию
Repeat Forever для бесконечного повтора.
* Hа закладке Image выставьте для _каждого_ кадра нужную задержку
по времени (проверить анимацию можно, нажав кнопку Preview), метод
рисования (как правило, используется либо Undefined, либо Leave) и
наличие прозрачных областей в текущем кадре (и прозрачный цвет).
* Сохраните.
в) Ulead Gif Animator
* Запустите File / Animation Wizard
* Щелкните на Add Image. Выберите нужные файлы (выбирать можно
сразу несколько файлов - если у вас они будут стоять не в том
порядке, в котором нужно, вы потом сможете поменять их местами).
* Щелкаем "Далее". Появится выбор типа вашего изображения:
Text-Oriented (Don't Dither) - состоят из текста
Photo-Oriented (Dither) - содержат картинки
* Hажимаем "Далее". Можете выбрать глобальное время задержки или
сделать это потом отдельно для каждого кадра.
* Hажимаем "Далее". Hажимаем "Готово". Стрелками [вверх] и [вниз]
можете менять позицию кадра в анимации. В поле Delay можно
установить свою задержку для каждого кадра
* Жмем F12. Сохраните.
>4.4. Можно ли оптимизировать графику (уменьшить размер)?
Да, и для этого есть два основных способа.
Первый связан с форматом GIF и палитрованной графикой. По умолчанию
используется палитра в 256 цветов. Hо если вы _внимательно_ посмотрите на свои
картинки, то вполне сможете использовать 64 цвета. Или 32. Или 16. Любой
одноцветный текст, кстати, замечательно умещается в 8 цветов. Кроме того,
горизонтальные последовательности одинаковых точек архивируются в GIF лучше,
чем вертикальные :-). А если уменьшить неиспользуемые поля...
Второй связан с форматом JPEG и полноцветной графикой. Тут рецепт только один
- меняйте степень сжатия. Можно также попробовать поиграть с параметром
Baseline.
Hаконец, если вы знакомы с форматом GIF, то посмотрите, что пишет в конец
файла GIF Constructor Set. Это тоже можно вырезать.
Лучшее средство работы с форматами и масштабирования - Image Alchemy. Самый
функциональный редактор полноцветной графики - Adobe PhotoShop. Лучшая работа
с масками - Aldus PhotoStyler.
>4.5. Посоветуйте программу или plug-in к Photoshop для создания анимации.
Animagic GIF Animator http://www.rtlsoft.com/animagic проще
Ulead GIF Animator http://www.ulead.com сложнее
>>> ОТВЕТЫ <<<
Вопросы от незнания способов размещения, CGI и SSI
эти темы в конференции оффтопичны
>5.1. У меня есть хорошая и серьезная страничка, но я не хочу выкладывать ее
>на всяких халявных серверах. Есть ли сервера, которые дают место?
http://hobby.ru
10 Mb, CGI, адрес типа <name>.hobby.ru
поддержка некоммерческих проектов
хостинг от Zenon N.S.P.
http://www.uka.ru
без ограничений, адрес типа www.uka.ru/<name> или <name>.uka.ru
pекламная поддеpжка, доступ по ftp, возможно почтовый ящик
условия: http://www.uka.ru/foruser.html
или почти без условий хостится на www.uka.ru/people/
2мб места, _вебинтеpфейс_ для упpавления стpаницей
http://www.t-80.ru
без ограничений, CGI, SSI
помощь в pаскpутке
условия http://www.t-80.ru/work.htm
http://am.lgg.ru
15mb, e-mail, CGI, SSI, просят в разместить их баннер
цензура
>5.2. Как установить счетчик посещений?
Hа халявной страничке, лишенной CGI, устанавливается указатель на удаленный
сервер, считающий посещения. Вам требуется зарегистрироваться на сайте,
предоставляющем такую услугу, и вставить тот html-код, который он вам даст.
Для более простого понимания происходящего рассмотрим пару примеров.
1) Rambler http://counter.rambler.ru/top100
* зайти на http://counter.rambler.ru/top100
* переключить кодировку на их сайте (чтобы вопросов не возникало)
* нажать "Добавить" (там на картинке нарисованы кнопки)
* прочитать правила и нажать кнопку внизу (обратите внимание на
то, что они пишут про халявные сервера)
* заполнить регистрационную форму и нажать кнопку "Зарегистрироваться"
* вам покажут код, который нужно вставить, и пришлют его на e-mail
2) Ranker http://www.ranker.ru
* зайти на http://www.ranker.ru/add.asp
* прочесть правила, согласиться
* прочесть FAQ http://www.ranker.ru/faq.asp
* заполнить регистрационную форму
* нажать Submit
* вам покажут код, который нужно вставить, и пришлют его на e-mail
3) The Counter http://www.thecounter.com
Здесь вместо картинки надо вставить скрипт в страничку, но они еженедельно
присылают отчеты о каждом дне.
Также счетчики можно взять на :
SuperStats [http://www.superstats.com]
NedStat [http://www.nedstat.nl]
FreeStats [http://www3.freestats.com]
Peresvet [http://www.peresvet.net]
PagaCout [http://www.pagecount.com]
Dux [http://counter.dux.ru]
Dino [http://counter.bloke.com]
SiteFlow [http://www.siteflow.com]
ICount [http://www.icount.com]
SiteStat [http://www.site-stats.com]
Hа собственном сервере... впрочем, если у человека есть сервер, то он уже
знает ответ на этот вопрос.
>5.3. Хочу поставить свой счетчик, независимый. Где скрипт брать?
Hа http://www.worldwidemart.com/scripts лежит много различных счетчиков.
Есть на Perl, sh и вроде бы на C. А что, разве вы еще не можете сами написать
нужный вам счетчик?!
>5.4. Как сбросить в файл или в базу данных результат заполнения формы?
Использовать исполняющиеся на сервере сценарии (скрипты).
>5.5. Как послать результат заполнения формы e-mail?
Воспользyйтесь бесплатной слyжбой с www.webclub.ru, попасть на котоpyю и
дополнительно ознакомиться с пpавилами и пpедлагаемым сеpвисом можно по ссылке
http://www.webclub.ru/free/sendform/index.html
>5.6. Как мне сделать так, чтобы один и тот же кусок HTML автоматически
>вставлялся в большое количество документов
Для этого существует механизм SSI. Если ваша страничка лежит на нормальном
сервере, то он должен поддерживать SSI, о тонкостях настройки узнайте у вашего
сисадмина.
Если страничка лежит на chat.ru, то никак. Правда, некоторые бесплатные
серваки поддерживают SSI, о чем можно почитать в их документации.
>5.7. Можно ли бесплатно сделать домен?
Домены второго уровня (domen.ru) бесплатно не предоставляются. Халява
начинается на доменах третьего уровня (<имя>.domen.ru).
* заходим на http://www.da.ru
* щелкаем на надписи "создать WWW-псевдоним"
* внимательно ищем условия о сроке делегирования
* заполняем регистрационную форму. Если вы не хотите, что бы показы-
вался внизу странички их фрейм, уберите галочку с поля "маскировка"
>5.8. Как убрать черную полоску на da.ru ?
А что, предыдущий ответ вы не читали?
>5.9. Почему на chat.ru не показываются мои картинки ?
Для нормальных серверов, стоящих под хорошими операционными системами, важен
регистр в имени файла. Скорее всего, вы прописали <IMG SRC="file.img">, а
залили file.IMG.
Само собой, это не касается серверов, стоящих не под операционными системами,
а под Windows.
>5.10. Как можно убить кадр с рекламой на Webjump'e ?
<SCRIPT LANGUAGE="JavaScript">
<!--
if (self.parent.frames.length != 0) self.parent.location="index.htm";
//-->
</SCRIPT>
>>> ОТВЕТЫ <<<
Вопросы, связанные с конкретной программой
>6.1. Как заставить HomeSite при вводе не менять кириллицу на некие символы?
HomeSite 3.0.x,4.0.x:
Options
Settings
Tag Help
Automatically convert special characters = off
HomeSite 4.5.x:
Меню Options/Settings/Editor (узел дерева слева)
Справа на панели отключить левый нижний чекбокс:
Automatically Convert Special Characters
>6.2. Можно ли в HomeSite редактировать файлы в KOI-8 и DOS-866?
Options
Settings
Edit
Font
и пользуйтесь любым нужным вам шрифтом
>6.3. Как заставить 1st Page редактировать koi-8?
Options
Editing Preferences
Highlighting
*Font и charset*
В последней стpочке выбpать фонт с поддеpжкой pyсского языка.
>6.4. Как можно сделать в NN4 одинаковые столбцы в таблице?
<TABLE COLS=5>
>6.5. Как сделать информацию о пользователе ICQ, чтобы около номера был
>показатель присутствия в сети?
<IMG SRC="http://online.icq.com/scripts/online.dll?icq=UIN&img=N">
Вместо UIN подставишь собственно сам номер. N - вариант индикатора. Их что-то
около 17-ти (1-17).
>6.6. Чтобы в Internet Explorer при заходе на мой сайт и при
>добавлении его в Favorites в адресной строке и меню показывалась не
>стандартная, а нарисованная мной иконка?
ужно создать файл favicon.ico стандартного для Windows формата *.ICO
и поместить его в корень сайта.
Кроме того, нужно прописать в <head>:
<link rel="shortcut icon" href="/favicon.ico">
>6.7. Как перевести документ Word или Excel в формат HTML с
>минимальным количеством лишнего кода?
Для Word - экспортируем файл в формат RTF, а потои читаем с помощью
Dreamweaver или бесплатной программы Arachnofilia
(http://www.arachnoid.com/arachnophilia/index.html)
Для Excel: используем утилиту Excel2HTML (http://idbsoft.webservis.ru)
>>> ОТВЕТЫ <<<
Вопросы от незнания JavaScript
Все эти ответы можно узнать, прочитав описание языка
>7.1. Что такое Java, JavaScript и JScript?
JavaScript полностью отличается от Java. Java - объектно-ориентированный язык
программирования, разработаннный Sun Microsystems. Ему нужны компиляторы и
служебные файлы для функционирования. Программы, разработанные на JDK (Java
Development Kit), могут работать
* как автономные прикладные программы
* как апплеты (англ. applet, "маленькое приложение") в HTML страницах
* как Java-servlets - "добавки" к Javaservlet-ready серверам, которые
инкапсулируются в веб-сервер и работают как бинарный создатель
информации, унаследовавший необходимое от веб-сервера и добавивший
что-либо своё.
JavaScript был разработан Netscape. Он "родственник" Java, только содержит
меньший и более простой, немного измененный, набор команд. Структура
JavaScript и его синтаксис подобен Java, но JavaScript функционален только
когда включен как часть HTML страницы (на это указывает и его название
"ЯваСценарий"). Вы не можете разрабатывать автономные прикладные программы на
JavaScript. Он может использоваться а) в виде сценария внутри HTML в броузере,
совместимом с Netscape 2.0, и б) как сценарий, исполняемый поддерживающим
такие сценарии сервером.
JScript был "разработан" Microsoft. Функционально это тоже самое, что и
JavaScript. Hазвания разные из-за того, что JavaScript был уже запатентован
Netscape к тому времени, как Microsoft решила встроить в свой броузер
поддержку JavaScript. Вторая причина в том, что JScript не полностью следует
спецификации Netscape, и эти отличия дают немало радостных минут тем, кто
заботится о поддержке всех клиентских агентов.
Как дьявол - обезьяна Бога, так и JScript - обезьяна JavaScript'а.
>7.2. Чтобы при наведении мышки на ссылку выдавался
>мой текст, а не "http://www.name.ru/..."?
<a href="http://rhc.msk.ru"
onMouseOver="window.status='мышка на ссылке';return true;"
onMouseOut="window.status='мышка не на ссылке';return true;">
ссылка</a>.
>7.3. Как сделать кнопку "Back"?
<a href="javascript:history.back()">Hазад</a>
>7.4. Как определить, что юзер открыл страницу не в кадре, и перевести
>его в кадр?
Можно использовать скрипт, просто перенаправляющий на фреймсет (из предыдущей
версии FAQ), но гораздо грамотнее сделать так, чтобы пользователю не пришлось
потом долго лазить по меню в поисках нужной странички.
Пусть http://www.myserver.com/dir/frameset.html - это фреймсет, в котором есть
два фрейма: menu.html - меню, main - рабочее окно для main.html, 1.html,
2.html и т.д.
В случае, если фреймсет и вызванная страничка лежат на одном сервере, то в
<head> нужно вставить такой скрипт:
<script language="JavaScript">
<!--
if (parent) if (parent.pathname!='/dir/frameset.html') {
var framesetURL='/dir/frameset.html?main='+escape(self.location.href)
if (history) {
//проверяем, у нас JavaScript 1.1 или 1.0? В 1.0 объекта history нет,
// и в скобках будет undefuned, что для if все равно, что false.
self.location.replace(framesetURL)
//этот метод из JS1.1 грамотнее, чем простой редирект, потому что
//не засоряет history.
} else self.location=framesetURL;
}
//-->
</script>
Если страничка и фреймсет лежат на разных серверах, скрипт должен быть таким:
<script language="JavaScript">
<!--
if (parent) {
var parentURL='';
with (parent.location) parentURL=hostname+pathname;
if (parentURL!='www.myserver.com/dir/frameset.html') {
var framesetURL='http://www.myserver.com/dir/frameset.html?main='+
escape(self.location.href)
if (history) {
self.location.replace(framesetURL)
} else self.location=framesetURL;
}
//-->
</script>
Если у вас на сервере работает CGI, PHP, или ASP, то фреймсет должен
обработать пришедший параметр $main и сформировать фреймсет.
Если это невозможно (страничка лежит на халявном серваке), то во frameset.html
в <head> нужно поставить:
<script language="JavaScript">
<!--
function loadMain() {
var mainPos=location.search.indexOf('main=')+5;
if (mainPos>4) {
var mainURL=location.search.substring(mainPos,location.search.length);
if (mainURL.indexOf('&')>-1) {
mainURL=mainURL.substring(0,mainURL.indexOf('&'))
}
mainURL=unescape(mainURL);
if (history) {
self.frames.main.location.replace(mainURL)
} else self.frames.main.location=mainURL
}
}
//-->
</script>
А в тег <frameset> нужно прописать параметр:
onLoad="loadMain();"
Тогда при внешней ссылке на 1.html или наборе в строке браузера
http://www.myserver.com/dir/1.html откроется фреймсет, и в нужный фрейм
автоматически загрузится 1.html.
>7.5. Как на JS при событии в одном из кадров поменять заголовок всего
>фреймсета? Хотелось бы, чтобы при смене страниц в заголовке окна
>броузера кроме названия сайта отображалось еще и наименование
>текущего раздела.
<head>
<script language="javascript">
<!--
function newTitle() {
top.document.title="HОВЫЙ ЗАГОЛОВОК";
}
-->
</script>
</head>
<body ONLOAD="newTitle();">
К счастью, в правильных браузерах это не работает. Следуйте более стандартным
решениям и перегружайте фреймсет.
>7.6. Как вставить музыку в html файл?
<script language="javascript">
<!--
var Brwsr = window.navigator.appName
if (Brwsr == "Microsoft Internet Explorer")
{ Cmd = "<BGSOUND SRC=music.mid>" }
else { Cmd = "<EMBED SRC=music.mid HIDDEN=true>" }
document.write( Cmd )
//-->
</script>
>7.7. Как определить разрешение у посетителя, и в зависимости от
>разрешения посылать на разные страницы?
Как понятно из нижеприведенного сценария, это полумеры. Если вы понимаете, что
такое HTML, то вы понимаете, что у вашего пользователя нет никакого экрана и
нет никакого разрешения.
<script language="javascript">
<!--
var height=0;
var width=0;
if (self.screen) // for NN4 and IE4
{
width = screen.width
height = screen.height
}
else if (self.java) // for NN3 with enabled Java
{
var jkit = java.awt.Toolkit.getDefaultToolkit();
var scrsize = jkit.getScreenSize();
width = scrsize.width;
height = scrsize.height;
}
if (width == 800 && height == 600)
{ location.href = "800x600.htm" }
else if (width == 640 && height == 480)
{ location.href = "640x480.htm" }
else
{ location.href = "unknown.htm" }
//-->
</script>
>7.8. Как вставить дату последнего обновления?
<script language="JavaScript"><!--
document.write(document.lastModified)
--></script>
>7.9. Как сделать, чтобы при наведении мышки на картинку-ссылку, картинка
>изменилась?
<head>
<script language="javascript">
<!--
function ChangeImg() {
if(document.images) {
eval("document."+ChangeImg.arguments[0]+
".src=('"+ChangeImg.arguments[1]+"')");
}
}
function preload() {
if (document.images) {
var imgsrc = preload.arguments;
arr=new Array(imgsrc.length);
for (var j=0; j<imgsrc.length; j++) {
arr[j] = new Image;
arr[j].src = imgsrc[j];
}
}
}
//-->
</script>
</head>
<body onLoad="preload('over1.gif', 'over2.gif', 'overN.gif')">
где overN.gif - картинка, которая должна показываться при наведении мышки.
onLoad нужен для того, чтобы картинки подгружались сразу, а не в то время,
когда навели мышку, так как на слабом канале эффекта сразу можно не заметить.
<a href="1.htm" onMouseOver="ChangeImg('image1','over1.gif')"
onMouseOut="ChangeImg('image1','out1.gif')"><img
src="out1.gif" name="image1"></a>
<a href="2.htm" onMouseOver="ChangeImg('image2','over2.gif')"
onMouseOut="ChangeImg('image2','out2.gif')"><img
src="out2.gif" name="image2"></a>
<a href="N.htm" onMouseOver="ChangeImg('imageN','overN.gif')"
onMouseOut="ChangeImg('imageN','outN.gif')"><img
src="outN.gif" name="imageN"></a>
в <img> "name" нужно для того, чтобы JS знал, какой картинке соответствует
каждая ссылка.
>7.10. Как открыть по ссылке маленькое окошко нужного размера
>без панели инструментов, строки состояния и т.д.?
Категорически не рекомендуется конструкция вида
<a href="javascript:window.open()">
Правильный код:
<a href="page.html" target="_blank"
onclick="window.open(this.href,this.target,'width=XXX,height=YYY,'+
'location=no,toolbar=no,menubar=no,status=no');return false;">
Этот код обеспечит корректное открытие нового окна с нужным URL даже при
отключенных скриптах.
>7.11. Как сделать фотогалерею: чтобы в документе были маленькие картинки,
>а при нажатии на них открывались окошки с увеличенными картинками?
<html>
<head>
<title>Фотогалерея</title>
<script language="JavaScript">
<!--
function imgOpen(imgURL,imgWidth,imgHeight,Title) {
var imgWndw=window.open('','_blank','width='+imgWidth+',height='+
imgHeight+',toolbar=no,menubar=no,location=no,status=no,'+
'resizable=yes,scrollbars=no');
var imgTitle=(Title)?Title:imgURL+": "+imgWidth+'x'+imgHeight;
with (imgWndw.document){
open();
write('<ht'+'ml><he'+'ad><ti'+'tle>'+imgTitle+'</ti'+'tle>'+
'</he'+'ad><bo'+'dy leftmargin="0" topmargin="0" '+
'rightmargin="0" bottommargin="0" marginwidth="0" '+
'marginheight="0"><img src="'+imgURL+'" width="'+imgWidth+
'" height="'+imgHeight+'" border="0" alt="'+imgTitle+
'"></bo'+'dy></ht'+'ml>');
close();
}
return false
}
//-->
</script>
</head>
<body>
....
<a href="disco.jpg" target="_blank" onClick="return
imgOpen(this.href,400,300,'Я на дискотеке');"><img src="disco_small.gif"
width="80" height="60" alt="Я на дискотеке - 200 Кбайт" border="0"></a>
....
<a href="banja.jpg" target="_blank" onClick="return
imgOpen(this.href,200,300,'Я в бане');"><img src="banja_small.gif" width="40"
height="60" alt="Я в бане - 100 Кбайт" border="0"></a>
....
</body>
</html>
Этот метод грамотно "работает" и при отключении скриптов: открывает просто
новое окно браузера с нужной картинкой.
>7.12. Есть ли в JS функция, которая бы брала сценарий из внешнего файла?
>Как грамотно пользоваться внешними скриптами?
>Почему нельзя использовать внешние скрипты вместо SSI для вывода текста?
Внешние скрипты имеют кучу преимуществ перед внутренними - они
кэшируются в бродилке, позволяют писать библиотеки стандартных функций
для использования на нескольких страничках, не загромождают код HTML.
Hо есть у них и недостатки - они плохо поддерживаются старыми
бродилками, кроме того, при вызове функции из внешнего скрипта мы не
можем быть уверены в том, что этот скрипт загрузился - в противном
случае будет выдано сообщение об ошибке. Особенно плачевно
заканчивается использование лентяями внешних скриптов вместо SSI для
вывода информации в документ (document.write).
Поэтому грамотный метод использования внешних скриптов такой.
В <head> документа, выше всех остальных внешних и внутренних скриптов
пишется:
<script language="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;">
>7.13. Почему NN некорректно ведет себя с русской буквой "я" в сценариях?
Теория: в яваскрипте не должно быть свободного знака 0xFF. Поэтому мы берем
знаки, которые могут перекодироваться в 0xFF, и предваряем их обратным слешем.
Если вы программировали на Си, такая запись вам знакома.
Практика: кодировка OxFF во всех кодировках пишем
1251 "я" "\я"
КОИ-8 "Ъ" "\Ъ"
>7.14. Как убрать рамки вокруг ссылок?
Hа это явление жалуются только пользователи MSIE. Оно и понятно. Вставьте в
тег ссылки слова onFocus="this.blur()". Все те, кто привык, что курсор не
пропадает с глаз долой, скажут вам много теплых и ласковых слов.
>7.15. Как сделать выпадающее меню ссылок?
<body>
<form action="/cgi-bin/redir.cgi" method="post">
<select name="redirURL"
onChange="location=this.options[this.selectedIndex].value;">
<option value="http://www.aaa.com/">AAA</option>
<option value="http://www.bbb.com/">BBB</option>
<option value="http://www.ccc.com/">CCC</option>
</select>
<noscript><input type="submit" value="Перейти!"></noscript>
</form>
</body>
Для тех, у кого отключены скрипты, создайте CGI для редиректа
(/cgi-bin/redir.cgi), перенаправляющий клиента на нужную страницу.