eManual.ru - электронная документация
Секция 3 из 3 - Предыдущая - Следующая
Все секции
- 1
- 2
- 3
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="НОВЫЙ ЗАГОЛОВОК";
}
-->
</script>
</head>
<body ONLOAD="newTitle();">
К счастью, в правильных браузерах это не работает. Следуйте более стандартным
решениям и перегружайте фреймсет.
>7.6. Как вставить музыку в html файл?
<script language="javascript">
<!--
var Brwsr = window.navigator.appName
if (Brwsr == "Microsoft Internet Explorer")
{ Cmd = "<BGSOUND SRC=676/music.mid>" }
else { Cmd = "<EMBED SRC=676/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=676/('"+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=676/a>
<a href="2.htm" onMouseOver="ChangeImg('image2','over2.gif')"
onMouseOut="ChangeImg('image2','out2.gif')"><img
src=676/a>
<a href="N.htm" onMouseOver="ChangeImg('imageN','overN.gif')"
onMouseOut="ChangeImg('imageN','outN.gif')"><img
src=676/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=676/"'+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=676/"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=676/"banja_small.gif" width="40"
height="60" alt="Я в бане - 100 Кбайт" border="0"></a>
...
</body>
</html>
Этот метод грамотно "работает" и при отключении скриптов: открывает просто
новое окно браузера с нужной картинкой.
>7.12. Есть ли в JS функция, которая бы брала сценарий из внешнего файла?
<script language="JavaScript" src=676/script>
Русифицированный MSIE 3.01 и, видимо, некоторые другие его родственники
падают, встретив эту функцию.
>7.13. Почему NN некорректно ведет себя с русской буквой "я" в сценариях?
Теория: в яваскрипте не должно быть свободного знака 0xFF. Поэтому мы берем
знаки, которые могут перекодироваться в 0xFF, и предваряем их обратным слешем.
Если вы программировали на Си, такая запись вам знакома.
Практика: кодировка OxFF во всех кодировках пишем
1251 "я" "я"
КОИ-8 "Ъ" "Ъ"
>7.14. Как убрать рамки вокруг ссылок?
На это явление жалуются только пользователи 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), перенаправляющий клиента на нужную страницу.
Секция 3 из 3 - Предыдущая - Следующая
|