When starting a fresh HTML site it is very useful to have a basic HTML template to use. This template should include:
- Doctype declaration
- Head and body tags
- Title tags
- Most commonly used meta tags
- Include for a CSS style-sheet
Having an empty template document will save you time, and will ensure that you don't forget to include any of the most important features of the html page structure. This template should serve as a 'blank canvas' as it were, rather than starting with a completely blank document every time. Here is an example of my template for XHTML 1.0, which can also be downloaded from the link at the bottom of this article:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML Template</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<style type="text/css">
@import url(style.css );
</style>
</head>
<body>
</body>
</html>
DOCTYPE:
The doctype declaration (DTD) is important as it tells the browser what type of HTML you are using, and therefore which conventions you will need to follow when coding the site's content. For more information on this check out this Recommended list of DTDs to use in your Web document.
TITLE:
This is the title that appears at the top of the browser window, it is also the title that appears in the google listing for your page. It is good practice to have a different title for each page of your site. The title can be split into two parts:
- The name of your site
- A description of the page
resulting in something like: UK Diving - The worlds largest internet resource for divers (Site name - Site description) or: UK Diving - Contact Us (Site name - Page description).
STYLE-SHEET:
The stylesheet provides all the colour, layout and text-formatting styles for your html page, it is written in CSS (Cascading Style Sheet). Please refer to this document on Cascading Style Sheets for more info about CSS. The style-sheet can actually be written entirely between the two style tags, but I prefer to include it as a separate document, as this can be easily included in every page of the site, and once it is stored in the users cache it will also save on page loading time. The style-sheet in my example template is called 'style.css'.
META TAGS:
I use three basic meta tags in my HTML template:
- Content type — This tells the browser which character set you are using. In my template I use UTF-8.
- Description — This is the description of your page that appears in search engine listings.
- Keywords — A list of key words and phrases that relate to your page, seperated by commas. This is for search engine purposes too.
ABOUT WRITING XHTML 1.0:
Here are some of the rules of XHTML 1.0.
All nested tags must be closed in the reverse order in which they are opened:
<div><span>Hello</span></div> = Correct
<div><span>Hello</div></span> = Incorrect
All tags that don't have a closing tag must be treated as self-closing with a backslash:
<img src="test.jpg" /> = Correct
<img src="test.jpg"> = Incorrect
<br /> = Correct
<br> = Incorrect
All special characters must be encoded correctly:
& = incorrect
& = correct
Please feel free to use my template as a basis for your HTML pages. You can also test your HTML markup for errors using the online W3 markup validator, or the Web Developer Toolbar for Firefox.
DOWNLOAD TEMPLATE:
What happens when the page contains a form and the user types into the form inputs?
Hi Steve
Good question. I hadn’t tested that.
You could always try working around this by using the focus() and blur() events for the form input to switch the keypress function on or off.
Basic example:
$(’input’).focus(function(){
var keypress_active = false;
});
$(’input’).blur(function(){
var keypress_active = true;
});
Hi, thanks for the infos, the code is working well, but is it possible to replace the windows.location by an ajax call ? thanks ?
if yes how ?
thanks
[...] Detecting keypresses cross-browser using jquery | Sam Burdge (tags: jquery keypress) [...]
BRILLIANT! This was exactly what I had been looking for. Love the color scheme to your site too. Very retro DOS-ish.
Hello Sam! This is exactly what I am looking for for arrow-key navigation through my comics site. I need to disable it when people are typing in comment fields, though, and I just can’t seem to implement your example code for disabling above.
Could you expand on it a bit? It would be a great help if you could!