D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG and CSS. D3’s emphasis on web standards gives you the full capabilities of modern browsers without tying yourself to a proprietary framework, combining powerful visualization components and a data-driven approach to DOM manipulation.
The Limits of XMLHttpRequest
Ajax via XMLHttpRquest (XHR) has been revolutionizing the web, driving the web2.0 movement. While there are complaints, the technique is quite effective. However, it does have a severe limitation in that the requests can only be made to a server within the same-origin of the currently loaded page. This was implemented as a security measure, but it's a questionable one to take (see Security Outlook).
Enter COWS Ajax and many Possibilities become available. Allowing a connection to foreign sites can lead to the creation of a new breed of powerful tools and favelets. Instead of each site owner making their own tools, now a single author can make and distribute a cool tool or service that is easily installed on countless sites with the simple addition of one or two lines of code. It's extremely easy to install for a site owner, can provide extremely powerful apps to the users, and can provide extremely good branding or revenue for a tool creator.
#
function printDOMTree(Mid) {
#
var i; // for cycles
#
for (i=0;i<Mid.childNodes.length;i++) // go through all childs of our element
#
if (Mid.childNodes[i].nodeType==1) // if element
#
{ document.write('<br />[' + Mid.childNodes[i].nodeName + ']' ); // we will write its name in [name]
#
printDOMTree(Mid.childNodes[i]); // and recursively run our function for this element
#
document.write('[/' + Mid.childNodes[i].nodeName + ']' ); // writes element name in [/name]
#
}
#
else if (Mid.childNodes[i].nodeType==3) // if it's text
#
{
#
if (Mid.childNodes[i].nodeValue=='\n') // if this text is a pagebreak symbol \n
#
{ document.write('<br />[text:\\n]<br />' ); } // we will print it as \n just to see it in output
#
else
#
{ document.write('<br />[text:' + Mid.childNodes[i].nodeValue + ']<br />' ); } // else just write the text node
#
}
#
}
This specification introduces features to HTML and the DOM that ease the authoring of Web-based applications. Additions include the context menus, a direct-mode graphics canvas, inline popup windows, server-sent events, and more.
D. Huynh, D. Karger, and R. Miller. Proceedings of the 16th international conference on World Wide Web, page 737--746. Banff, Alberta, Canada, ACM, (2007)