java script: вопросы и ответы

A4

Старожил
Незнайка":26agfcj9 сказал(а):
Как сделать чтобы координаты слоя отсчитывались от рисунка, чтобы при изменении размеров окна или разрешения, смещение слоя оставалось неизменным.
а можно код?
 

Незнайка

Старожил
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>тест</title>

<style type="text/css">
#Layer1 {
	position:absolute;
	left:630px;
	top:73px;
	width:150px;
	height:150px;
	z-index:1;
	visibility: hidden;
	overflow: visible;
}
</style>

<script type="text/javascript">
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
</script>
</head>

<body>
<div id="Layer1">
  <table width="100%" height="100%" border="1" cellpadding="10" cellspacing="0" bordercolor="#003366" bgcolor="#6699CC">
    <tr>
      <td><center>
        <font color="#FFFFFF">дополнительная информация</font>
      </center></td>
    </tr>
  </table>
</div>
<center>
<p><img src="http://autopresent.ru/image/logo_vw.gif" name="image1" width="51" height="51" border="0" id="image1" onMouseOver="MM_showHideLayers('Layer1','','show')" onMouseOut="MM_showHideLayers('Layer1','','hide')"></p> 
</center>
</body>
</html>

Это для разрешения 1280*1024
 

A4

Старожил
мда. теоретически как бы ясно, что нужно задавать относительное позиционирование для всплывающей подсказки, относительно общего для неё и картинки родительского элемента.
и оно как бы работает.
Код:
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
<title>òåñò</title> 

<style type="text/css">
#info { visibility:hidden;
        position:relative;
		left: 110px;
		top: -25px;
		border:solid 2px #003366;
		background-color: #6699CC;
		width:150px;
		height:150px;
		overflow:visible;		
</style> 

<script type="text/javascript">
function hide() {
document.getElementById("info").style.visibility = "hidden";
} 
function show() {
document.getElementById("info").style.visibility = "visible";
}
</script>
</head> 

<body> 
<center> 
<div>
<a href="#" onMouseOver="show()" onMouseOut="hide()"><img src="logo_vw.gif" name="image1" width="51" height="51" border="0"></a>
<div id="info"><table width="100%" height="100%" cellspacing="0" cellpadding="0">
	<tr>
	  <td align="center"><font color="#FFFFFF">äîïîëíèòåëüíàÿ èíôîðìàöèÿ</font></td>
	</tr>
	</table></div>
</div>
<div style="z-index:-100; position: relative; left:0px; top:-150px">остальной текст текст текст</div>
</center> 
</body> 
</html>
только вот родительский див расползается тогда на высоту скрытой части. т.е. пустое место должно быть сверху-справа-слева-снизу. у меня снизу, следующий див подтянут опять же относительными координатами, но так до бесконечности продолжаться не может :)
если делать через display будет прыгать вверх-вниз :?
короче косяк где-то, не пойму где :)
 

A4

Старожил
Night_Elf":1vr32am3 сказал(а):
а visibility вместо display тут нельзя использовать?
он и используется. проблема в том, что
див, в котором всё лежит выглядит так:

Код:
[картинка]
[попап]

попап хоть и скрыт, жрёт место под картинкой. а когда display его нет вообще, но появляется. я так понимаю, если его выпихнуть на другой слой, вместе с картинкой, ничего этого не будет, но чего-то я не втыкаю, как это сделать :)
 

gram

Старожил
эх молодежь молодежь, всему вас учить надо :)

курите:

Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>oano</title>

<style type="text/css">
#info { visibility:hidden;
        position:absolute;
      left: 110px;
      top: 80px;
      border:solid 2px #003366;
      background-color: #6699CC;
      width:150px;
      height:150px;
      overflow:visible;    
	  }
</style>

<script type="text/javascript">
function hide() {
document.getElementById("info").style.visibility = "hidden";
}
function show() {
document.getElementById("info").style.visibility = "visible";
}
</script>
</head>

<body>
<center>
<div>
<div style="position: relative; border: 1px solid black; width: 100px;">
	<div id="info">
		<table width="100%" height="100%" cellspacing="0" cellpadding="0">
	   <tr>
		 <td align="center"><font color="#FFFFFF">aiiieieoaeuiay eioi?iaoey</font></td>
	   </tr>
	   </table>
	</div>
	<a href="#" onMouseOver="show()" onMouseOut="hide()"><img src="logo_vw.gif" name="image1" width="51" height="51" border="0"></a>
</div>
</div>
<div>остальной текст текст текст</div>
</center>
</body>
</html>

основную хрень оставил оригинальную,стиль написал инлайновый, так быстрее и понятнее

Добавлено спустя 2 минуты 22 секунды:

p.s. visibility можно заменить на display, роли не играет
 

gram

Старожил
ну ты координаты подбери, я уж не стал заморачиваться :)

Добавлено спустя 21 секунду:

подбирается относительно верхнего левого угла черного прямоугольника
 

Незнайка

Старожил
Отлично, то что надо. А то я уже написал функцию вычисления координат рисунка и уже думал, как прикрутить само смещение.

gram и А4 - огромное спасибо.

Осталось только сделать, чтобы слой пропадал не сразу, а с некоторой задержкой. Ну здесь, думаю, сам разберусь.
 

gram

Старожил
Незнайка":3vpln78g сказал(а):
Осталось только сделать, чтобы слой пропадал не сразу, а с некоторой задержкой. Ну здесь, думаю, сам разберусь.
как два пальца :) но есть маленькая хитрость :) сам поймешь, когда начнешь делать...
hint: setTimeout() и clearTimeout()
 

Night_Elf

Старожил
подозреваю, что с помощью js можно запихать текущий URL в буфер обмена.
Никто не подскажет, как это сделать? :)
 

Кекс

Старожил
О, присоединюсь к вопросу: можно ли любые данные, например из поля input type=text (или type=hidden), засунуть в буфер нажатием кнопочки, а также высунуть из буфера куда-нибудь.
 

gram

Старожил
если б можно было, я бы стырил все ваши пароли... :lol:
в IE существует механизм, запрашивающий разрешение пользователя, в ФФ нельзя, пока юзер в настройки не залезет.
пользуйтесь Сtrl+C, Ctrl+V ;)
 
A

Anonymous

не хочу показаться cтарамодным, но нате:
javascript:window.clipboardData.setData('Text', '1234');
 

Кекс

Старожил
hostt":xmqys2w5 сказал(а):
Но !!! По-моему имелось ввиду немного другое.
А какая разница, если javascript позволяет работать с буфером, то в него можно засовывать все, что угодно.

a boy like me":xmqys2w5 сказал(а):
javascript:window.clipboardData.setData('Text', 'URL');

Достаточно выполнить этот скрипт на странице, где URL можно вписать через PHP.
А как, все-таки, вставлять из буфера? Кнопкой, например, type=submit вставить содержимое буфера в текстовое поле.

PS. a boy like me, почему старомодным? :)
 

gram

Старожил
ну я же сказал, нельзя, нельзя вставить из буфера :) точнее конечно можно, но эксплорер будет дрючить вас вопросами, а ФФ по дефолту ничего не делать
 

Кекс

Старожил
Есть в функции такой кусочек, типа генерим случайное число:
Код:
function example()
{
...	
my_variable = Math.floor(Math.random()*100);
...
}
Функция вызывается при клике по нопке, например.
Как сделать так, чтобы при каждом вызове функции случайное число генерилось заново? А не оставалось тем же, какое сгенерилось в первый раз.

Блин, в FireFox пашет. Не пашет в IE и Opera.
Хочу чтоб пахало везде...

upd.

Методом косвенного тыка, выяснилось, что переменная меняется, проблем в другом... Буим копать.

Проблема в том, что эта переменная не может использоваться с применением innerHTML. В полях формы, например, она обновляется. А в innerHTML - фиг :(

upd.

Решил проблему через innerText. :)
 
Верх