Правильнее - cursor:pointer, cursor:hand работает только в IE, т.к. значения "hand" в спецификациях нет.
Можно и в лоб, но спецификации запрещают такие конструкции.
Более того, такая конструкция не работает в Firefox и Opera (FF2 и O9).
А Assist не подходит?
www.assist.ru
Можно просто при выборе первого селекта сабмитить форму и в зависимости от этого выбора заполнить соседний селект. Тогда не потребуется таскать большие массивы ненужных данных. В идеале такой вариант можно проапгрейдить, и сделать не перезагрузку страницы, а AJAX, как было сказано выше.
Вот подобный скрипт, но работает не только в IE. В вашем случае какая-то очень странная реализация меню.
<html> <head> <style type="text/css"> #dropmenudiv{ position:absolute; border:1px solid black; border-bottom-width: 0; font:normal 12px Verdana; line-height:18px; z-index:100; } #dropmenudiv a{ width: 100%; display: block; text-indent: 3px; border-bottom: 1px solid black; padding: 1px 0; text-decoration: none; font-weight: bold; } #dropmenudiv a:hover{ /*hover background color*/ background-color: yellow; } </style> <script type="text/javascript"> var menu1=new Array() menu1[0]='<a href="http://www.javascriptkit.com">JavaScript Kit</a>' menu1[1]='<a href="http://www.freewarejava.com">Freewarejava.com</a>' menu1[2]='<a href="http://codingforums.com">Coding Forums</a>' menu1[3]='<a href="http://www.cssdrive.com">CSS Drive</a>' var menu2=new Array() menu2[0]='<a href="http://cnn.com">CNN</a>' menu2[1]='<a href="http://msnbc.com">MSNBC</a>' menu2[2]='<a href="http://news.bbc.co.uk">BBC News</a>' var menuwidth='165px' var menubgcolor='lightyellow' var disappeardelay=250 var hidemenu_onclick="yes" var ie4=document.all var ns6=document.getElementById&&!document.all if (ie4||ns6) document.write('<div id="dropmenudiv" style="visibility:hidden;width:'+menuwidth+';background-color:'+menubgcolor+'" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>') function getposOffset(what, offsettype){ var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop; var parentEl=what.offsetParent; while (parentEl!=null){ totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop; parentEl=parentEl.offsetParent; } return totaloffset; } function showhide(obj, e, visible, hidden, menuwidth){ if (ie4||ns6) dropmenuobj.style.left=dropmenuobj.style.top="-500px" if (menuwidth!=""){ dropmenuobj.widthobj=dropmenuobj.style dropmenuobj.widthobj.width=menuwidth } if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover") obj.visibility=visible else if (e.type=="click") obj.visibility=hidden } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body } function clearbrowseredge(obj, whichedge){ var edgeoffset=0 if (whichedge=="rightedge"){ var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15 dropmenuobj.contentmeasure=dropmenuobj.offsetWidth if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure) edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth } else{ var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18 dropmenuobj.contentmeasure=dropmenuobj.offsetHeight if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge } } return edgeoffset } function populatemenu(what){ if (ie4||ns6) dropmenuobj.innerHTML=what.join("") } function dropdownmenu(obj, e, menucontents, menuwidth){ if (window.event) event.cancelBubble=true else if (e.stopPropagation) e.stopPropagation() clearhidemenu() dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv populatemenu(menucontents) if (ie4||ns6){ showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth) dropmenuobj.x=getposOffset(obj, "left") dropmenuobj.y=getposOffset(obj, "top") dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px" dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px" } return clickreturnvalue() } function clickreturnvalue(){ if (ie4||ns6) return false else return true } function contains_ns6(a, b) { while (b.parentNode) if ((b = b.parentNode) == a) return true; return false; } function dynamichide(e){ if (ie4&&!dropmenuobj.contains(e.toElement)) delayhidemenu() else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget)) delayhidemenu() } function hidemenu(e){ if (typeof dropmenuobj!="undefined"){ if (ie4||ns6) dropmenuobj.style.visibility="hidden" } } function delayhidemenu(){ if (ie4||ns6) delayhide=setTimeout("hidemenu()",disappeardelay) } function clearhidemenu(){ if (typeof delayhide!="undefined") clearTimeout(delayhide) } if (hidemenu_onclick=="yes") document.onclick=hidemenu </script> </head> <body> <a href="default.htm" onClick="return clickreturnvalue()" onMouseover="dropdownmenu(this, event, menu1, '150px')" onMouseout="delayhidemenu()">Web Design</a> | <a href="default2.htm" onClick="return dropdownmenu(this, event, menu2, '200px')" onMouseout="delayhidemenu()">News Sites</a> (onclick) </body> </html>
Deler, Scorpio, важная часть вопроса была - как сохранить ссылки на старые страницы. Как вы предлагаете это реализовать? Это не наезд, просто интересно узнать решение под Joomla которое позволило бы задать странице абсолютно произвольный путь.
Сам могу посоветовать Bitrix, т.к. сама идеология системы там такова, что структура сайта не задана жёстко и можно реализовать любую структуру, не устанавливая никаких комонентов и пр.
Маяк - это шедевр! Положить стихи Маяковского на музыку, спеть так, что сразу понимаешь, что он эти стихи сквозь себя пропустил - это выше всяких похвал.
Бродский был, Маяковский был, кто следующий? :D
В целом, альбом удался, особенно на фоне предыдущего...
Подгружается страница вашего сайта или чужая?
Если своя, в заданной странице можно определить массивчик с заголовками.
Если страница чужая, придётся её парсить перед выводом.
И напоследок полезная ссылка: http://www.regexp.ru/
Аналогичный тулбарчик есть и под файрфокс: https://addons.mozilla.org/firefox/60/
UltraEdit, например. Там поиск и замена поддерживает и регулярные выражения, поэтому очень тонко настраивается. http://www.ultraedit.com/
Если замена нужна в файлах с html, тогда очень хорош hutmil - там много специфических для html функций. http://www.triplehash.com/Hutmil.html