HTML
edit- HTML4.01 Reference
- HTML Validator
- Color maps here, Cross Platform Colors, Experiment all colors (Change the URL)
- Text formatting are in here: http://www.w3schools.com/html/html_formatting.asp
- URL Encoding Characters: http://www.w3schools.com/html/html_urlencode.asp
- Entities reference in: http://www.w3schools.com/tags/ref_entities.asp
Basic
edit- html tags are case insensitive. However, lowercase is recommended
- Do not put formatting in .html. Use styles instead!
<html> Defines an HTML document <head> Defines the head section. Put "initialization" javascripts here. <title> Title section. Must be under head. <body> Defines the document's body <h1> to <h6> Defines header 1 to header 6. h6 is smallest <p> Defines a paragraph <br> Inserts a single line break <hr> Defines a horizontal rule <pre> Pre-formatted <blockquote> Text quoted from somesource <font> DONT USE THIS AS THIS IS DEPRECIATED!!! <!--> Defines a comment <acronym title="World Wide Web">WWW</acronym> Displays "World Wide Web" as tooltip.
- Lists (Can be embedded):
<ol type="A"> Defines an ordered list (numbered by default. Types are: "A","a","I","i") <ul type=""> Defines an unordered list (bullets. Types are "disc","circle","square") <li> Defines a list item <dl> Defines a definition list <dt> Defines a definition term <dd> Defines a definition description
- Head:
<head> Defines information about the document <title> Defines the document title <base> Defines a base URL for all the links on a page e.g. <head><base target="_blank"></head> // Open all links using target. <link> Defines a resource reference <meta> Defines meta information <!DOCTYPE> Defines the document type. This tag goes before the <html> start tag.
- Scripts:
<script> Defines a script <noscript> Defines an alternate text if the script is not executed <object> Defines an embedded object <param> Defines run-time settings (parameters) for an object. e.g. <param name="BorderStyle" value="1" />, In XHTML the <param> tag must be properly closed.
- Attributes
Core Attributes - Not valid in base, head, html, meta, param, script, style, and title elements. Attribute Value Description ========= ========================= ================================= class class_rule or style_rule The class of the element id id_name A unique id for the element style style_definition An inline style definition title tooltip_text A text to display in a tool tip Language Attributes - Not valid in base, br, frame, frameset, hr, iframe, param, and script elements. dir ltr | rtl Sets the text direction lang language_code Sets the language code Keyboard Attributes accesskey character Sets a keyboard shortcut to access an element tabindex number Sets the tab order of an element
- Tags:
<h2 align="center" name="chapter4">text</h1> // Can be used as href="#chapter4" later <body bgcolor="yellow">... // yellow background bgcolor="#000000" bgcolor="rgb(0,0,0)" <a href="url" target="_blank">text</a> // New window target="_top" // Break out of a frame <a href="url"><img src="buttonnext.gif"></a> // image link <a href="mailto:email@com?cc=email@com&bcc=email@com &subject=text%20text&body=text%20text">Send Mail</a> // Send Mail <img src="constr4.gif" width="144" height="50" border="0" // settings alt="Big Boat" // alternate text (will display when image failed to load) align="middle|top|bottom" // default is bottom. Alignment of image wrt text align="left|right" // alignment of image wrt paragraph ismap // Display the mapping on the statusbar (Will work if usemap is not used) usemap="#planetmap"> // use a mapping <map id="planetmap" name="planetmap"> <area shape="rect" coords="0,0,82,126" alt="Sun" href="sun.htm"> <area shape="circle" coords="90,58,3" alt="Mercury" href="mercur.htm"> </map>
Forms / Tables
edit- Forms
<form name="input" action="html_form_action.asp" method="get"> First name: <input type="text" name="firstname" size="10" value="default_value"><br> Password: <input type="password" name="lastname"><br> Radio: <input type="radio" name="sex" value="male"> Male<br> // Make the name="sex" to be the same for the female. Checkbox: <input type="checkbox" name="bike" checked="checked">I have a bike<br> // checked="checked" will set it to default SubmitButton: <input type="submit" value="Submit"> ResetButton: <input type="reset" value="Reset"> Button: <input type="button" value="Hello world!"> TextArea: <textarea rows="10" cols="30"> The cat was playing in the garden. </textarea> Drop down: <select name="cars"> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="fiat" selected="selected">Fiat</option> </select> </form> <fieldset> // This puts a border around the form <legend>Personal information:</legend> <form>......</form> </fieldset> <label for="lname">Last Name:</label> // label example <input type="text" name="lastname" id="lname" /> <button onclick="load(); refocus();" onmouseover="foo()" onmouseout="foo1()">Load</button>
- Tables
<table border=nPixel cellpadding=nPixel // cellpadding is spacing around the cells. cellspacing=nPixel // cellspacing is the border size around cells. bgcolor="red" // background color (applicable to td/th) background="bgdesert.jpg" // background image (applicable to td/th/body). Could put URL here width="400" or "100%"> // pixel width or % width <tr> // table row <th/td rowspan="2" align="center" // table header / will occupy two rows / set the alignment (left,right,center) <td> // table cell <caption>My Caption</caption> // Put this just after the <table>
Style
edit- Basic
style=" font-family:verdana; font-size:8pt; color:green"
- Styles
//External <head><link rel="stylesheet" type="text/css" href="mystyle.css"></head> //Internal <head><style type="text/css"> body {background-color: red} p {margin-left: 20px} </style></head> // inline <p style="color: red; margin-left: 20px">This is a paragraph</p>
Meta / URL / Characters
edit- Meta: Document information
<meta name="description" content="Free Web tutorials on HTML, CSS, XML, and XHTML"> // used by search engines <meta name="keywords" content="HTML, DHTML, CSS, XML, XHTML, JavaScript, VBScript"> // keywords <head> // Auto-Redirect: in 5 Seconds <meta http-equiv="Refresh" content="5;url=http://www.w3schools.com"> </head>
- URL Schemes
mailto sends email e.g. "mailto:someone@w3schools.com" file a file on your local PC ftp a file on an FTP server http a file on a World Wide Web Server https a file on a World Wide Web Server, secure gopher a file on a Gopher server news a Usenet newsgroup e.g. "news:alt.html" telnet a Telnet connection WAIS a file on a WAIS server
- Common characters. Complete reference in: http://www.w3schools.com/tags/ref_entities.asp
Result Description Entity Name Entity Number non-breaking space & nbsp; & #160; < less than & lt; & #60; > greater than & gt; & #62; & ampersand & amp; & #38; " quotation mark & quot; & #34; ' apostrophe & apos; (does not work in IE) & #39;
Frames
edit- Cannot use <body> and <frameset> together.
- Basic frames:
<html> <frameset cols="25%,50%,25%" // change this to "rows" for vertical framespacing="0" frameborder="0" border="0"> <frame noresize="noresize" // Do not resize name="showframe" // Can be used with: <a href="frame_c.htm" target="showframe">Frame c</a> frameborder="1" scrolling="auto" // "auto"/"no" (scrollbar) marginwidth="0" marginheight="0" src="frame_a.htm"> <frame src="frame_b.htm"> <frame src="frame_c.htm"> <noframes><body>Your browser does not handle frames!</body></noframes> </frameset> </html>
- Combined horizontal/vertical:
<frameset rows="50%,50%"> <frame src="frame_a.htm"> <frameset cols="25%,75%"> <frame src="frame_b.htm"> <frame src="frame_c.htm"> </frameset> </frameset>
- Inline Frames
<body> <iframe src="filename.html"></iframe> </body>
GreaseMonkey
editGeneral
edit- Greasemonkey help: http://diveintogreasemonkey.org/, UserScripts
- Testing for greasemonkey functionality (version check)
if (!GM_xmlhttpRequest) { alert('Please upgrade to the latest version of Greasemonkey.'); return; }
- Built-in Functions:
GM_log('message'); // Log in console window (debugging) function GM_setValue(key, value); // Cookie function GM_getValue(key, defaultValue); // Cookie function GM_registerMenuCommand(menuText, callbackFunction); // Adds a menu item in Greasemonkey->User Script Commands GM_xmlhttpRequest -> http://diveintogreasemonkey.org/api/gm_xmlhttprequest.html
- Important variables:
print( window.location.host ); // Domain name e.g. www.google.com print( window.location.href ); // Complete URL path
- It is a nice habit to check a function before calling it (e.g. if multiple frames, execute the func only on the frame that the func exist)
if (doLoadAll) { doLoadAll(); }
Getting elements
edit- The xpath function. xpath tutorial
function xpath(query) { return document.evaluate(query, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); }
- Testing for a page if it contains HTML element:
var textareas = document.getElementsByTagName('textarea'); if (textareas.length) { // there is at least one textarea on this page } else { // there are no textareas on this page }
- Loop thru all elements
var allElements, thisElement; allElements = document.getElementsByTagName('*'); // change the '*' with 'textarea' for textarea only. for (var i = 0; i < allElements.length; i++) { thisElement = allElements[i]; // do something with thisElement }
- Doing something with an element
allLinks = xpath('//a[@href]'); // ALL links on a page allElements = xpath('//*[@title]'); // ALL the elements with a title attribute allClassSpon= xpath("//div[@class='sponsoredlink']"); // all <div>s with a class of sponsoredlink postforms = xpath("//form[translate(@method, 'POST ', 'post')='post']"); // case insensitive for (var i = 0; i < allLinks.snapshotLength; i++) { thisobj = allLinks.snapshotItem(i); // do something with thisobj switch (thisobj.nodeName.toUpperCase()) { case 'A': // this is a link, do something break; case 'IMG': // this is an image, do something else break; default: // do something with other kinds of HTML elements } }
- Insert an <hr> before/after the main content . This presumes that there is an element whose ID is "main".
var main, newElement; main = document.getElementById('main'); if (main) { newElement = document.createElement('hr'); main.parentNode.insertBefore(newElement, main); // BEFORE the main content main.parentNode.insertBefore(newElement, main.nextSibling); // AFTER the main content }
- Deleting an element
var adSidebar = document.getElementById('ads'); if (adSidebar) { adSidebar.parentNode.removeChild(adSidebar); }
- Replacing an element
var theImage, altText; // Replace an image with its alt text theImage = document.getElementById('annoyingsmily'); if (theImage) { altText = document.createTextNode(theImage.alt); theImage.parentNode.replaceChild(altText, theImage); }
- Inserting HTML quickly
var logo = document.createElement("div"); logo.innerHTML = '<div style="margin: 0 auto 0 auto; ' + 'border-bottom: 1px solid #000000; margin-bottom: 5px; ' + 'font-size: small; background-color: #000000; ' + 'color: #ffffff;"><p style="margin: 2px 0 1px 0;"> ' + 'YOUR TEXT HERE ' + '</p></div>'; document.body.insertBefore(logo, document.body.firstChild); -or- var logo = document.createElement('img'); logo.src = 'data:image/gif;base64,R0lGODlhDQAOAJEAANno6wBmZgAAAAAAACH5BAAAAAAA'+ 'LAAAAAANAA4AQAIjjI8Iyw3GhACSQecutsFV3nzgNi7SVEbo06lZa66LRib2UQAAOw%3D%3D'; document.body.insertBefore(logo, document.body.firstChild);
Styles
edit- Adding CSS styles
function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('p { font-size: large ! important; }');
- Getting an element's style
<html> <head> <title>Style test page</title> <style type="text/css"> p { background-color: white; color: red; } </style> </head> <body> <p id="p1">This line is red.</p> <p id="p2" style="color: blue">This line is blue.</p> </body> </html>
- Get & Set the styles defined by an element's style attribute:
var p1elem, p2elem; p1elem = document.getElementById('p1'); p2elem = document.getElementById('p2'); alert(p1elem.style.color); // will display an empty string alert(p2elem.style.color); // will display "blue" p1style = getComputedStyle(p1elem, ''); p2style = getComputedStyle(p2elem, ''); alert(p1style.color); // will display "rgb(255, 0, 0)" alert(p2style.color); // will display "rgb(0, 0, 255)" p1elem.style.marginTop = '2em'; p1elem.style.backgroundColor = 'white'; p1elem.style.color = 'red';
Post processing
edit- Post processing a page after it renders
var newBody = '<html><head><title>My New Page</title></head><body>' + '<p>This page is a complete replacement of the original.</p></body></html>'; window.addEventListener( 'load', function() { document.body.innerHTML = newBody; }, true);
- Replace links
var a = document.getElementById('article'); if (a.href.match(/\?/i)) { // link already contains other parameters, so append "&printer=1" a.href += '&printer=1'; } else { // link does not contain any parameters, so append "?printer=1" a.href += '?printer=1'; }
- Redirecting the entire URL!
window.location.href = window.location.href.replace(/^http:/, 'https:');
- Intercepting User clicks:
document.addEventListener('click', function(event) { // event.target is the element that was clicked. // Do whatever you want here! // if you want to prevent the default click action // (such as following a link), use these two commands: event.stopPropagation(); event.preventDefault(); }, true);
- Overriding a java method (submit)
function newsubmit(event) { var target = event ? event.target : this; // do anything you like here alert('Submitting form to ' + target.action); // call real submit function this._submit(); } // capture the onsubmit event on all forms window.addEventListener('submit', newsubmit, true); // If a script calls someForm.submit() manually, the onsubmit event does not fire, // so we need to redefine the submit method of the HTMLFormElement class. HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit; HTMLFormElement.prototype.submit = newsubmit;
Parsing XML
edit- See also for a sample atom example
var xmlString = '<passwd>' + ' <user id="101">' + ' <login>mark</login>' + ' <group id="100"/>' + ' <displayname>Mark Pilgrim</displayname>' + ' <homedir>/home/mark/</homedir>' + ' <shell>/bin/bash</shell>' + ' </user>' + '</passwd>' var parser = new DOMParser(); var xmlDoc = parser.parseFromString(xmlString, "application/xml"); var entries = xmlDoc.getElementsByTagName('passwd'); var title; for (var i = 0; i < entries.length; i++) { title = entries[i].getElementsByTagName('login')[0].textContent; alert(title); // output is mark }
Examples
edit- force offsite links to open in a new window
var a, thisdomain, links; thisdomain = window.location.host; links = document.getElementsByTagName('a'); for (var i = 0; i < links.length; i++) { a = links[i]; if (a.host && a.host != thisdomain) { a.target = "_blank"; } }
- wiki textbox change
var wiki; wiki = document.getElementById('wpTextbox1'); if (main) { wiki.value='<pre>john'; }