Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

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 - Предыдущая - Следующая



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте