JavaScript и Java – два совершенно разных языка! Java – полноценный объектно ориентированный язык программирования, разработаннный Sun Microsystems. Ему нужны компиляторы и служебные файлы для функционирования. Программы, разработанные на JDK (Java Development Kit), могут работать как автономные прикладные программы, как апплеты в 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, и эти отличия дают немало радостных минут тем, кто заботится о поддержке всех клиентских агентов.
Чтобы при наведении мышки на ссылку выдавался мой текст, а не "http://www.name.ru/..."?
Очень просто:
<a href="http://www.r-t-f-m.info"
onMouseOver="window.status='мышка на ссылке';return true;"
onMouseOut="window.status='мышка не на ссылке';return true;">
ссылка</a>.
Как сделать кнопку "Back"?
<a href="javascript:history.back()">Hазад</a>
Разумеется, что вместо текста легко можно вставить свою картинку.
Как определить, что юзер открыл страницу не в кадре, и перевести его в кадр?
Можно использовать скрипт, просто перенаправляющий на фреймсет, но гораздо грамотнее сделать так, чтобы пользователю не пришлось потом долго лазить по меню в поисках нужной странички.
Пусть 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.
Как на JS при событии в одном из кадров поменять заголовок всего фреймсета? Хотелось бы, чтобы при смене страниц в заголовке окна броузера кроме названия сайта отображалось еще и наименование текущего раздела.
<head>
<script language="javascript">
<!--
function newTitle() {
top.document.title="HОВЫЙ ЗАГОЛОВОК";
}
-->
</script>
</head>
<body ONLOAD="newTitle();">
К счастью, в правильных браузерах это не работает. Следуйте более стандартным решениям и перегружайте фреймсет.
Как определить разрешение у посетителя, и в зависимости от разрешения посылать на разные страницы?
Как понятно из нижеприведенного сценария, это полумеры. Если вы понимаете, что такое 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>
Как вставить дату последнего обновления?
<script language="JavaScript">
document.write(document.lastModified)
</script>
Но не все серверы правильно поддерживают этот скрипт.
Как сделать, чтобы при наведении мышки на картинку-ссылку, картинка изменилась?
Русифицированный MSIE 3.01 и, видимо, некоторые другие его родственники
падают, встретив эту функцию. Правда, сейчас им вряд ли кто-то пользуется.
Почему NN некорректно ведет себя с русской буквой "я" в сценариях?
B яваскрипте не должно быть свободного знака 0xFF. Поэтому мы берем знаки, которые могут перекодироваться в 0xFF, и предваряем их обратным слешем. Если вы программировали на Си, такая запись вам знакома.
Пример: кодировка OxFF во всех кодировках пишем
1251 "я" "\я"
КОИ-8 "Ъ" "\Ъ"
Как убрать рамки вокруг ссылок?
Hа это явление жалуются только пользователи MSIE. Оно и понятно. Вставьте в тег ссылки слова onFocus="this.blur()". Все те, кто привык, что курсор не пропадает с глаз долой, скажут вам много теплых и ласковых слов.