Let’s say I have a page where I display a list of links in my sidebar. But I also have other content I want to add in my sidebar and I don’t want to have to scroll down in order to see all the content I have there. What can I do to limit the size of my list of links? Oh, yes, I can use CSS and make the font size smaller. but I don’t want to do that, because I like the font-size like it is now. So what else can help me here…??
I know! I can use JavaScript! Cool! But if I use JavaScript, what would happen with my list of links when my page would be visited by someone that doesn’t have JavaScript enabled? hmmm… then I should use this technique called unobtrusive scripting. Ok, fine, I can do that!
First, I should define my purpose: I want my list of links to show up as a DropDownList control for those having JavaScript enabled and also having the same functionality as it had before and to be displayed as a normal list for those that don’t have JavaScript enabled.
The html markup for my list of links looks like this:
<div id=”PageSidebarManager”>
<div id=”ListContainer”>
<ul id=”SIDEBAR_LIST_MENU”>
<li class=”CAPTION”>
<p>Web sites</p>
<ul>
<li><a href=”http://www.seomegacorp.com/blog/Microsoft”>Microsoft</a></li>
<li><a href=”http://www.seomegacorp.com/blog/Adobe”>Adobe</a></li>
<li><a href=”http://www.seomegacorp.com/blog/Sun”>Sun</a></li>
</ul>
</li>
<li class=”CAPTION”>
<p>Search Engines</p>
<ul>
<li><a href=”http://www.seomegacorp.com/blog/Yahoo”>Yahoo</a></li>
<li><a href=”http://www.seomegacorp.com/blog/MSN”>MSN</a></li>
<li><a href=”http://www.seomegacorp.com/blog/Google”>Google</a></li>
</ul>
</li>
<li class=”CAPTION”>
<p>SEO</p>
<ul>
<li><a href=”http://www.seomegacorp.com/blog/Link baiting”>Link baiting</a></li>
<li><a href=”http://www.seomegacorp.com/blog/Black Hat”>Black Hat</a></li>
<li><a href=”http://www.seomegacorp.com/blog/White Hat”>White Hat</a></li>
</ul>
</li>
</ul>
</div>
<div id=”SidebarSelectorContainer”>
<p class=”SelectorTitle”>Select: </p>
</div>
<div id=”SidebarUpdatePanel”>
<p id=”textContainer” class=”ResultText”></p>
</div>
</div>
I have added some divs to wrap the content I’ll generate using JavaScript:
- SidebarSelectorContainer - this div will wrap the paragraph and the generated DropDownList control
- SidebarUpdatePanel - this div will wrap the paragraph that will display the selected item from the DropDownList.
Ok, I don’t quite need the last div, because when the user selects a menu item from the DropDownList I would redirect him to that specific page he requested, but for the sake of simplicity, I decided to just show some info in it.
At this point, I need the CSS markup, so my list of links would be displayed nicely on the page and also to hide (by default) the div I will be using in the script:
<style type=”text/css” media=”screen”>
DIV#PageSidebarManager { width: 500px; height: auto; margin: 50px auto auto 50px; padding: 5px 5px 5px 5px;}
/* JavaScript enabled */
DIV#SidebarSelectorContainer {
display: none; /* will be made visible in script */
width: auto; height: auto;
text-align: left; vertical-align: middle;
margin: 5px 5px 5px 5px; padding: 0 0 0 0;
}
P.SelectorTitle {
float: left; margin: 3px 7px 0 3px; padding: 0 0 0 0;
font-family: Georgia, Tahoma, ‘Times New Roman’, Serif;
font-size: 10pt;
font-weight: 800;
color: #000000;
}
DIV#SidebarUpdatePanel {
width: auto; height: auto;
text-align: left; vertical-align: middle;
margin: 5px 5px 5px 5px; padding: 0 0 0 0;
}
P.ResultText {
margin: 3px 7px 0 3px; padding: 0 0 0 0;
font-family: Verdana, Sans-Serif;
font-size: 10pt;
font-weight: 800;
color: #696969;
}
/* JavaScript disabled */
/* SIDEBAR MENU */
UL#SIDEBAR_LIST_MENU { margin: 5px 5px 5px 0; padding: 0 0 0 0; }
LI.CAPTION { padding: 3px 0 3px 0; }
LI.CAPTION P {
width: auto; height: auto;
font-family: Georgia, Tahoma, ‘Times New Roman’, Serif;
font-size: 12pt;
color: #000000;
margin: 0 0 0 0;
text-indent: 5px;
}
/* SECOND LEVEL LIST */
UL#SIDEBAR_LIST_MENU LI UL { margin: 0 7px 0 7px; }
UL#SIDEBAR_LIST_MENU LI UL LI { }
UL#SIDEBAR_LIST_MENU LI UL A { color: #808080; }
UL#SIDEBAR_LIST_MENU LI UL A:hover { color: #000000; text-decoration: underline; }
</style>
Now I have one more question: Should I start scripting this by hand or I should use one of the multitude of free javascript libraries you can find over the internet? I could do it either way, but again, for the sake of simplicity I’ll choose the Core library (you can download it from here: Core library).
First thing first: import the script in the page.
Second, start writing my script. But, before actually starting it, I’ll need two more Objects to make my work easier:
- the Core.Browser - to differentiate the Internet Explorer browser from the others,
- and the Core.DOM - to get the references to the objects I’ll need in my script.
Now I’m ready to write: : )
<script id=”CreateSidebarMenu” type=”text/javascript”>
Core.Browser =
{
UA: window.navigator.userAgent,
isIE: function() { return (Core.Browser.UA.indexOf(“MSIE”) != -1); }
};
Core.DOM =
{
getById: function(targetElement)
{
if (document.getElementById){ return document.getElementById(targetElement); }
else if (document.all) { return document.all[targetElement]; }
else if (document.layers) { return document.layers[targetElement]; }
}
};
var SidebarMenuManager =
{
init: function()
{
// get a reference to the main menu list ddl_container
var list_container = Core.DOM.getById(“ListContainer”);
// hide the main menu list ddl_container
list_container.style.display = “none”;
// get a reference to the selector’s ddl_container
var ddl_container = Core.DOM.getById(“SidebarSelectorContainer”);
// display the ddl_container
ddl_container.style.display = “block”;
// create the dropdownlist
var selector = document.createElement(“select”);
// Add the onChange event to DropDownList
Core.addEventListener(selector, “change”, SidebarMenuManager.Selector_onChange);
// get a reference to the main list ddl_container
var mainList = Core.DOM.getById(“SIDEBAR_LIST_MENU”);
// get a reference to the list captions
var li_captions = Core.getElementsByClass(“CAPTION”);
for (var c = 0; c < li_captions.length; c++) {
var selectorCaptions = document.createElement(“optgroup”);
selectorCaptions.label = li_captions[c].getElementsByTagName(“p”)[0].innerText ||
li_captions[c].getElementsByTagName(“p”)[0].textContent;
selector.appendChild(selectorCaptions);
// get a reference to the second level list
var secondLevel_list = li_captions[c].getElementsByTagName(“ul”)[0];
// extract the links
var links = secondLevel_list.getElementsByTagName(“a”);
for (var s = 0; s < links.length; s++) {
var optionLinks = document.createElement(“option”);
var href = links[s].getAttribute(“href”);
var text = links[s].innerText || links[s].textContent;
if (Core.Browser.isIE()) { optionLinks.label = text; }
else { optionLinks.text = text; }
optionLinks.value = href;
// add links in the optgroup
selectorCaptions.appendChild(optionLinks);
}
}
return ddl_container.appendChild(selector);
},
Selector_onChange: function(event)
{
// get a reference to the paragraph
var text_container = Core.DOM.getById(“textContainer”);
var textToShow = “”;
if (Core.Browser.isIE()) {
return text_container.innerText = “you have selected the “ + this.options[this.selectedIndex].label +
” list item and it points to: “ + this.options[this.selectedIndex].value;
}
else {
return text_container.textContent = “you have selected the “ + this.options[this.selectedIndex].text +
” list item and it points to: “ + this.options[this.selectedIndex].value;
}
}
};
Core.start(SidebarMenuManager);
</script>
I have now a totally unobtrusive list of links and more available space to use in the sidebar! *me happy now!*
If you’d like to test it, here’s the link: Unobtrusive list of links
===
note: I have only tested in IE7, opera 9, Firefox 2, Safari 3 on Vista OS.
Popularity: 6% [?]


There are various types of browsers used in the industry and there is a huge scope for new software’s and tools. So, the code should correct and compatible for all of the browsers and should be updated with technology and software coming in next era.
Once you starting validating your files you’ll find the process to be an invaluable learning experience. Validation itself will teach you what the best ways to create your XHTML/HTML and CSS codes are. The more you use validation, the faster you’ll be able to create well-formed documents because you won’t be making the same mistakes over and over again.
Take out styles of the HTML page and put them into a standalone style sheet file, by doing so you can reduce the overall amount and size of code in your web pages. Then pages contain less code and so have smaller file sizes and Google prefers those pages which has smaller file sizes and other search engines prefers them too.
By applying CSS you can structure your all document of the page according to HTML standards without fear of compromising the style, look and feel of your web page. When use CSS it
You can apply dynamic CSS to 


SEO MegaCorp news blog is dedicated to provide tips, tricks and latest news around the industry that one might miss. We're a SEO company which is based in India, which is dedicated only to serve the clients with thier full satisfaction...