Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужен самый малообъемный скрипт показа собственной подсказки при наведении на ссылку. (https://javascript.ru/forum/misc/3693-nuzhen-samyjj-maloobemnyjj-skript-pokaza-sobstvennojj-podskazki-pri-navedenii-na-ssylku.html)

Tend 14.05.2009 19:35

Нужен самый малообъемный скрипт показа собственной подсказки при наведении на ссылку.
 
Нужен самый малообъемный скрипт показа собственной подсказки (title) при наведении на ссылку.
Еще чтобы во всех браузерах работал.

Один есть, но нужен ну очень маленький по объему.
Вот этот есть:

<a href='#' onmouseover='hintshow(event,1);' onmouseout='hinthide();'>link1</a>
<a href='#' onmouseover='hintshow(event,2);' onmouseout='hinthide();'>link2</a>

<script language='JavaScript'>
<!--
function hinthide()
{
	var div = document.getElementById('hintdiv').style;
	div.visibility = 'hidden';
	div.display = 'none';
}
function hintshow(e,id)
{
	var e = e || window.event;
	var x = e.x || e.clientX;
	var y = e.y || e.clientY;
	var dtop = 10;
	var dleft = 15;
	var rightw = 500;
	var r = new Array();
	r[1] = 'Подсказка1';
	r[2] = 'Подсказка2';

	var div = document.getElementById('hintdiv');
	if ( !div )
	{
		div = document.createElement('div');
		div.id = 'hintdiv';
		div.style.backgroundColor = '#ffffff';
		div.style.border = 'solid #333333 1px';
		div.style.position = 'absolute';
		div.style.padding = '5px';
		document.body.appendChild(div);
		div = document.getElementById('hintdiv');
	}
	div.innerHTML = r[id];
	dst = div.style;
	var s;
	if ( typeof window.pageYOffset != 'undefined' )
	{ s = window.pageYOffset; }
	else if ( typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat' )
	{ s = document.documentElement.scrollTop; }
	else if ( typeof document.body != 'undefined' )
	{ s = document.body.scrollTop; }
	dst.top = s+y+dtop;
	if ((screen.width-(rightw+50))<(x+dleft)) { dst.left = x - rightw; } else { dst.left = x + dleft; }
	dst.visibility = 'visible';
	dst.display = 'block';
}
// -->
</script>

evgen28 15.05.2009 10:16

попробуй аргумент тега <a alt="подсказка"/>
намного меньше :)

Gvozd 15.05.2009 10:37

evgen28,
может все-таки title? нету у ссылок alt-а. это атрибут для рисунков

evgen28 15.05.2009 10:55

точно title. Спасибо за поправку Gvozd.

clgs 15.05.2009 11:45

Доп. вопрос по теме: тотже title но уже без onmouse... на объекте. при наведении на какой либо объект и если у него есть не пустой title то он его показывает. ка можно реализовать? =)

e1f 15.05.2009 12:10

Вот самый малообъемный :)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<table style="border-collapse:collapse;border:1px solid gray">
  <thead title="head" style="border:1px solid #e0e0e0"><tr><th>HEAD</th></tr></thead>
  <tfoot title="foot" style="border:1px solid #ccc"><tr><td>FOOT</td></tr></tfoot>
  <tbody title="body" style="border:1px solid #aaa"><tr><td>BODY</td></tr></tbody>
</table>
</body>
</html>

title можно чему хочешь указать, и если он есть -- отобразится. Если нужна специфическая подсказка -- ну тогда mouseover/mouseout

Riim 15.05.2009 15:41

В идеале скрипт должен сам найти все элементы с не пустыми alt или title, дописать к ним нужные обработчики и удалить/обнулить alt и title, что бы не вылезала стандартная подсказка. Т. е . верстальщик вообще не должен ни о чем беспокоиться.

clgs 15.05.2009 16:43

Riim +1
А может теперь перейдем к реализации ;) Есть наброски?

Gvozd 15.05.2009 16:48

clgs,
а в чем проблема-то?)
переходи к реализации.
вот наброски
window.onload=funciton(){
var all=document.getElementsByTagName('*');
for(var i=0;i<all.length;i++){
var title=(all[i].alt||all[i].title);
if(title){
/*some magic*/
}
}
}

Tend 15.05.2009 20:07

Вообще нужен обычный title, только через javascript.
Смысл вроде этого:
<script language="JavaScript">
<!--
function s() { return 'qwe'+'asd'; }
// -->
</script>

<a href="..." title="javascript:s();">link</a>

Но это не работает и я не нашел как сделать.
Нужен именно через javascript - просто записать текст в title не подходит.
Я e-mail хочу спрятать. :)

Хотя, если вернуться к самому началу, то стоило бы спросить как можно показать людям свой e-mail так, чтобы всякие роботы его не смогли вычислить.


Часовой пояс GMT +3, время: 05:39.