4 вопроса по Javascript
Вопросы:
1. как узнать поддерживает ли браузер javascript
2. можно ли сделать всплывающее окно чтобы опера и подобные браузеры не блокировали его ?? пример форум IPB когда пришло личное сообщение.
3. для начала вступление: вот в CSS есть такой эффект или класс hover и focus вот например:
input, textarea, select {
background: #FAFAFA;
color: #000000;
border: 1px #D1DEEA solid;
font-size: 11px; font-family: Verdana, Helvetica; text-decoration: none;
}
input:hover, textarea:hover, select:hover {
background: #FAFAFA;
border: 1px #A2BCD5 solid;
}
Результатом будет – при наведении курсора на объекты перечисленные в коде будет меняться цвет рамки. Но данное свойство не работает в IE слышал что с помощи JS можно создать что-то подобное на стандартный hover и будет работать во всех браузерах, не подскажете как сделать для этих объектов.
4. У себя на сайте использую Javascript подсказки в нужных мне местах, они отсично подходят под дизайн и намного функциональней, чем стандартные html. Так вот как-то не замечал что на Firefox они не хотят работать так как с Javascript не очень знаком только основы, я не могу понять в чем бага, большая просьба кто разбирается подскажите что подправить в ниже представленном коде:
[HTML]Сам javascript код:
<script type="text/javascript">
var hide=true;
function movePic(word, info){
_x=window.event.clientX;
_y=window.event.clientY;
_dx=5;
left=false;right=false;
if(_dx+_x+myalt.clientWidth>document.body.clientWidth){
_x=document.body.clientWidth-myalt.clientWidth-_dx;
left=true;
}
if(_dx+_y+myalt.clientHeight>document.body.clientHeight){
_y=document.body.clientHeight-myalt.clientHeight-_dx;
right=true;
}
if(left&&right)
_y=document.body.clientHeight-myalt.clientHeight-_dx*4;
myalt.style.left=_x;
myalt.style.top=_y+document.body.scrollTop;
if(hide){
myalt.innerHTML="<table width='100%'><tr><th><center>"+info+"</center></th></tr><tr><td>"+word+"</td></tr></table>";
myalt.style.visibility="visible";
hide=false;
}
}
function hidePic(){
myalt.style.visibility="hidden";
myalt.innerHTML="";
myalt.style.top=0;
myalt.style.left=0;
hide=true;
}
</script>
Html code:
<style>
.hints {
visibility: hidden;
position: absolute;
left: 0;
top: 0;
border: 1px #7C95AD solid;
width: 200px;
background-color:#E3EBF2;
padding:0px;
z-Index:3
}
</style>
<img src=\"includes/images/info.gif\" style=\"CURSOR: pointer;\" border=\"0\" alt=\"\" onmousemove=\"movePic('"._PASSWORDFREE."', 'Password info')\" onmouseout=\"hidePic()\">
<div id=\"myalt\" class=\"hints\"></div>[/HTML]
2) Нет. Если выставлено "блокировать" значить блокировать и будут. А то, что ты видел это скорее всего не всплывающее окно, скрытый div или просто скрытый слой которые при наступлении определенного события "всплывает" вверх.
3) Это псевдо-классы и IE их поддерживает, хотя и не все.
4) Бага в IE. У него вообще много вольностей в плане работы с JS которые только в нем и работают. Лучше при разработке на него не ориентироваться.
Ну и напомни мне, что это за метод event объекта window.
Объект событий
Объект Event - свойства
data Массив адресов URL оставленных объектов, когда происходит событие DragDrop.
layerX Горизонтальное положение курсора (в пикселах) относительно слоя. В комбинации с событием Resize это свойство представляет ширину окна браузера.
layerY Вертикальное положение курсора (в пикселах) относительно слоя. В комбинации с событием Resize это свойство представляет высоту окна браузера.
modifiers Строка, задающая ключи модификатора - ALT_MASK, CONTROL_MASK, META_MASK или SHIFT_MASK
pageX Горизонтальное положение курсора (в пикселах) относительно окна браузера.
pageY Вертикальное положение курсора (в пикселах) относительно окна браузера.
screenX Горизонтальное положение курсора (в пикселах) относительно экрана.
screenY Вертикальное положение курсора (в пикселах) относительно экрана.
target Строка, представляющая объект, которому исходно было послано событие.
type Строка, указывающая тип события.
which ASCII-значение нажатой клавиши или номер клавиши мыши.
x Синоним layerX
y Синоним layerY
Ну и напомни мне, что это за метод event объекта window.
проблема с Firefox в опере и ИЕ все куль ))
Насчет hover вот нашел код который создает псевдо класс JShover, может кто сообразит для input переделать
Код предоставляю в том виде что нашел:
[HTML]<script type="text/javascript">
jsHover = function() {
var hEls = document.getElementById("Menu").getElementsByTagName("LI");
for (var i=0, len=hEls.length; i<len; i++) {
hEls.onmouseover=function() { this.className+=" jshover"; }
hEls.onmouseout=function() { this.className=this.className.replace(" jshover", ""); }
}
}
if (window.attachEvent && navigator.userAgent.indexOf("Opera")==-1) window.attachEvent("onload", jsHover);
</script>
<style type="text/css">
#Menu, #Menu ul {list-style: none; margin: 0; padding: 0; border: 1px solid #CCC; background: #EEE; float: left; width: 100%;}
#Menu li { float: left; position: relative; background: none;}
#Menu a { color: #000; text-decoration: none; display: block; font-size: 11px; font-family: Verdana, Helvetica; padding: 0px 10px; background: #EEE; url(dot.png) repeat-y right;}
#Menu a:hover { color: #000; background: #ccc;}
#Menu li:hover, #Menu li.jshover {background: #AAA;}
#Menu li ul {display: none; position: absolute; background: #fafafa; url(fone-tr.png); width: 140px;}
#Menu li li a { width: 120px; background: none;}
#Menu li:hover ul,#Menu li.jshover ul {display: block;}
#Menu li:hover li ul,#Menu li.jshover li ul {display: none; width: 140px;top: -1px; left: 120px;}
#Menu li:hover li:hover ul,#Menu li.jshover li.jshover ul {display: block;}
</style>
<ul id="Menu">
<li><a href="#null">Домой</a></li>
<li><a href="#null">Каталог</a>
<ul>
<li><a href="#null">Вся продукция <img src="arrow.gif" alt="" border="0"></a>
<ul>
<li><a href="#null">По дате</a></li>
<li><a href="#null">Производители</a></li>
<li><a href="#null">Другое</a></li>
</ul>
</li>
<li><a href="#null">Молотки <img src="arrow.gif" alt="" border="0"></a>
<ul>
<li><a href="#null">По дате</a></li>
<li><a href="#null">По производителю</a></li>
</ul>
</li>
<li><a href="#null">Гвозди</a></li>
<li><a href="#null">Доски</a></li>
</ul>
</li>
<li><a href="#null">Новости</a>
<ul>
<li><a href="#null">Новости сайта</a>
</li>
<li><a href="#null">Новости <img src="arrow.gif" alt="" border="0"></a>
<ul>
<li><a href="#null">Архив</a></li>
<li><a href="#null">Пресс-релизы</a></li>
<li><a href="#null">Разное</a></li>
</ul>
</li>
<li><a href="#null">Архив</a></li>
</ul>
</li>
</ul> [/HTML]
Насчет hover вот нашел код который создает псевдо класс JShover, может кто сообразит для input переделать
А вот оно что. Ты пытаешься навесить :hover не на тег A. Ну тогда да, IE вроде только для тега A поддерживает этот псевдо класс. А для прочих элементов пишем JS который через DOM меняет что угодно. Поиск.
Не, разговор о том, что :hover поддержан только для тега А. Или быть может ты имешь в виду не hover, а атрибут href? ;)
Начет запроса, это просто нужно прочитать какие нибудть уроки в духе "за 21 занятие секреты HTML, CSS, JS и бог весть чего еще", или там "веб для чайников".
Вот код, разбор что к чему как домашнее задание.
<title>Hover</title>
<script type="text/javascript">
var defaultCSSValue;
function hoverIn(elm)
{
defaultCSSValue = elm.style.backgroundColor;
elm.style.backgroundColor = 'red';
}
function hoverOut(elm)
{
elm.style.backgroundColor = defaultCSSValue;
}
</script>
</head>
<body>
<p>Please press any key.</p>
<input type="text" onmouseover="hoverIn(this)" onmouseout="hoverOut(this)">
</body>
</html>
Как насчет 4 вопроса я так поседел подумал
Думаю что
Надо
_x=window.event.clientX;
_y=window.event.clientY;
Заменить на вот это:
_x = (document.all) ? window.event.clientX : ??
_y = (document.all) ? window.event.clientY : ??
Только что место знаков вопроса поставить ?
window.event.clientX возвращает позицию курсора по Х – это работает в ИЕ и Опере а как написать для FireFox ?
_x = (document.all) ? window.event.clientX : event.pageX;
_y = (document.all) ? window.event.clientY : event.pageX;
то див не появляется ((
Что-то не похоже, ибо
Насчет hover вот нашел код который создает псевдо класс JShover, может кто сообразит для input переделать
зачем искать, если проходил?
window.event.clientX возвращает позицию курсора по Х – это работает в ИЕ и Опере а как написать для FireFox ?
Чуть выше, я тебе дал ссылку на пост в этом форуме, там есть сылка на статью о различии event объекта в IE и прочих браузерах. Будь добр прочесть её. Внимательно. Потом еще вот это покури: http://developer.mozilla.org/en/docs/DOM:event#Introduction