Ph: 13476731

Friday, October 10th, 2008

Reinhardt: a Client-side Dispatch Framework

Category: DojoView the technorati tag: Dojo

Kevin Dangoor of SitePen has introduced Reinhardt a dispatch engine on the client side:

A typical server-side web framework today includes three main components: a URL dispatching to some controller object scheme, a template engine, and a data mapping facility. Currently in Dojo, you’ll find that the latter two items already exist. dojox.dtl provides the first one, and dojo.data provides the second.

Given that Dojo already offers an implementation of the Django template engine, and that regular expression-based URL dispatch was a good fit for our problem at hand, I decided to base our URL dispatch on the model provided by Django.

You can see an example using the framework which uses these patterns:

JAVASCRIPT:
 
var patterns = reinhardt.urldispatch.patterns("demo.code",
  [/^list\/(\d*)$/, "showMovieList", ["year"]],
  [/^search$/, "search"],
  [/^movie\/(\d+)\/$/, "whatyear", ['id']],
  [/^movie\/([\w ]+)\/$/, "whatyear", ["name"]],
  [/^luke$/, "whatyear", [], {name: "Cool Hand Luke"}]
);
 

To get this all going you do something like this:

JAVASCRIPT:
 
dojo.addOnLoad(
  function() {
    if (!patterns.dispatch()) {
      renderContent("../../default.dtl",
                    {movieCount: demo.database.movies.length});
    }
  }
);
 
function renderContent(templatename, variables) {
  var template = new dojox.dtl.Template(new dojo.moduleUrl("demo",
                                      templatename));
  var context = new dojox.dtl.Context(variables);
  dojo.byId("content").innerHTML = template.render(context);
  pagecount++;
  dojo.byId("pagecount").innerHTML = pagecount;
}
 

Read the full article for details, and download the entire sample, for perusal.

Posted by Dion Almaer at 6:32 am
1 Comment

+++--
3.7 rating from 22 votes

Thursday, October 9th, 2008

Chofter: search mashup using all things Dojo

Category: DojoView the technorati tag: Dojo, ShowcaseView the technorati tag: Showcase

Shane O'Sullivan has built a nice search mashup experience called Chofter. It uses all things Dojo, including:

Layouts, Dialogs, Menus and ContentPanes for the user interface. dojo.data and dojo.rpc for data transfer. dojox.dtl (Django Templating Library) for transforming search data into visuals. dojo.fx and FisheyeLite for eye candy

Posted by Dion Almaer at 10:50 am
1 Comment

+++--
3.3 rating from 14 votes

Tuesday, October 7th, 2008

Dojo 1.2 Final Release

Category: DojoView the technorati tag: Dojo

Pete Higgins released Dojo 1.2 the first version under his command. There are a ton of subtle improvements such as:

New Datastores

dojox.data.JsonRestStore dojox.data.CouchDBRestStore dojox.data.GoogleFeedStore: A Google AJAX API powered data store for retrieving RSS and Atom feeds from Google. dojox.data.GoogleSearchStore: Data stores to interface Google's AJAX search services. dojox.data.PersevereStore: dojox.data.PersevereStore is an extension of JsonRestStore to Persevere's special features. dojox.data.S3Store: an extension of JsonRestStore to handle Amazon's S3 service using JSON data

New Projects in DojoX

dojox.analytics.Urchin

A Google-analytics helper, which supports lazy-loading the Google Analytics API at any point during a page lifecycle. Allows you to post-onload include Google Analytics helper, and track Ajax-y pages via a simple API, with a very small overhead.

dojox.av

New project for Audio/Video elements dojox.av.FLVideo: a player for Flash video files dojox.av.widget.Player: Dijit-based object for playing Flash media

dojox.embed

A set of utilities that allow you to load/include Objects such as Flash and Quicktime. dojox.embed.Flash for Flash movies
Create proxy information for Flash movies implementing ExternalInterface through dojox.embed.Flash.proxy
dojox.embed.Quicktime for Quicktime movies dojox.embed.Object—a Dijit that can be used via markup for any dojox.embed objects available.

dojox.io.windowName

Provides secure cross-domain request capability. Sends a request using
an iframe (POST or GET) and reads the response through the frame's window.name.

dojox.io.xhrPlugins

This is a registry for creating alternate XHR handlers, for example
you can register to use IE8's XDomainRequest or a proxy server to handle
cross-domain requests.

dojox.lang.aspect

dojox.lang.aspect is a new AOP library module for before/around/etc advice and other AOP features. See the blog post for details.

dojox.lang.observable

Provides a form of getter/setter support to objects.
Observable objects can be created such that all property
reads, writes, and method calls will trigger listener functions
so that you can create APIs where property interaction can be
controlled and monitored.
This relies on VBScript hacks for IE and is somewhat
limited in functionality.

dojox.secure.capability

This provides object-capability JavaScript validation. This is a validator to run before eval to ensure that a script can't access or
modify any objects (like global objects) outside of those specifically
provided to it.

dojox.secure.DOM

Provides a DOM facade that restricts access to a specified subtree
of the DOM.
The DOM facade uses getters/setters and lettables to emulate the DOM API.

dojox.secure.sandbox

Provides support for loading web pages, JSON, and scripts
from other domains using XHR (and XHR plugins) with a safe
subset library and sandboxed access to the DOM.

We updated the Google CDN to point to the new version too, and AOL has done the same.

Posted by Dion Almaer at 1:20 am
Comment here

++++-
4.1 rating from 45 votes

Tuesday, September 30th, 2008

Dojo Fishtank

Category: DojoView the technorati tag: Dojo

Blaine Ehrhart wrote a fun little fish tank using Dojo, as another example of doing animation using JavaScript, which includes the following to give you a taste:

JAVASCRIPT:
 
function playBubble (target,newbubble) {
        var top = parseInt(target.style.top);
        var left = parseInt(target.style.left);
        var rand = 50+Math.round(50*Math.random());
        // Here we detect how far up the page the bubble is so we can fade it out with the dojo.fadeOut function and delete it
        if (top <= 150) {
                var fadeOut = dojo.fadeOut({
                        node: target,
                        duration: 200,
                        onEnd: function(){dojo._destroyElement(target);}
                });
                fadeOut.play();
                return true;
        }
        // If it's a new bubble then we want to setup it's bubble sequence to go up
        if (newbubble == 1) {
                var floatUp = dojo.fx.slideTo({
                        node: target,
                        duration: 10000,
                        properties: {
                                top: {
                                        end:"-200",
                                        unit:"px"
                                }
                        }
                });
                floatUp.play();
        }
        // After many random variables are used you get a very bubbly effect when using dojo.fx.slideTo
        var bubbleEffect = dojo.fx.slideTo({
                node: target,
                duration: 1000,
                properties: {
                        left: {
                                end:(left%2)?(left-rand):(left+rand),
                                unit:"px"
                        }
                },
                onEnd: function(){playBubble(target);}
        });
        bubbleEffect.play();
        return true;
}
 

Posted by Dion Almaer at 7:30 am
2 Comments

+++--
3.4 rating from 19 votes

Wednesday, September 24th, 2008

OfflineRest: One pattern for offline architecture

Category: DojoView the technorati tag: Dojo, OfflineView the technorati tag: Offline

[image]

Kris Zyp has created OfflineRest, a new module in Dojo 1.2 that allows for a simple offline pattern to building your application.

Dojo 1.2’s new dojox.rpc.OfflineRest module automates the local storage of data and synchronization by leveraging the Dojo Data and REST abstractions. The OfflineRest module augments the JsonRest service in Dojo such that requests are cached in local storage for offline access, and modification requests (put, post, and delete) modify the cache and are recorded for delivery to the server; immediately if online, otherwise when connectivity is restored. Furthermore, JsonRest is the core engine used by JsonRestStore. Consequently, you can simply use the standard Dojo Data API with the JsonRestStore and effortlessly add offline capability with no modifications to your data interaction code. The underlying Rest service automates the handling of caching, storing data locally, and syncing changes. In addition the new OfflineRest module has no dependency on plugins, but rather progressively utilizes offline features that are available, while still operating properly on legacy browsers without offline support.

He has a demo that involves a CRUD system for hiking trails which interestingly asked me for Gears permission, even though it appears that OfflineRest doesn't abstract on top of both Gears and the emerging storage standard, which is something I would like to see, to extend the reach.

JAVASCRIPT:
 
dojo.require("dojox.rpc.OfflineRest");
dojo.require("dojox.data.JsonRestStore");
 
// create a store
trailStore = new dojox.data.JsonRestStore({url:"/Trail"});
dojox.rpc.OfflineRest.addStore(trailStore,"");
 
// data
var item = trailStore.newItem();
trailStore.setValue(item,"foo","bar");
 
// manually observing download changes to force updates
dojo.connect(dojox.rpc.OfflineRest, "downloadChanges", function(){
        .. download changes or refresh the page ..
});
 

Posted by Dion Almaer at 6:19 am
1 Comment

+++--
3.8 rating from 30 votes

Friday, September 19th, 2008

Dojo Toolkit 1.2 RC1 is Out!

Category: DojoView the technorati tag: Dojo

The Dojo team has put out the much anticipated release candidate for the Dojo Toolkit 1.2. Lots of work has gone into this with new updates and features galore added to this release:

1000+ changes, improvements, and bug fixes since the 1.1.1 release Huge improvements to Dijit include .attr() for getting and setting all attributes, and performance and polish improvements across all widgets The new and greatly improved Dojo Grid, with full dojo.data integration Enhancements to charting including tooltips, animations, events, legends, and several new chart types doh.robot, providing unit testing integration with Selenium and Windmill New features including but not limited to:
multi-file uploader refined image widgets (Lightbox, Slideshow, etc.) a fast XML parser many new data stores a faster way to include Google analytics security improvements including windowName and dojox.secure JSON (Path, Query, Referencing, and Schema)

This is only a small subset of the updates included and to really get an idea of the breadth of work gone into this release you need to check out Dojo Toolkit v1.2rc1 Release Notes.

Sitepen founder and Dojo team member Dylan Schiemann had this to say about the new release:

The Dojo Community and Contributors have worked tirelessly for the past 6 months, packing an incredible amount of improvements, performance fixes, enhancements, documentation, and more into this release. It's our most polished, complete, fast, well-documented release ever. I'm fortunate to get to work with such a great community, and I applaud the outstanding effort that has gone into making Dojo extraordinary.

Download Dojo Toolkit v1.2rc1

Posted by Rey Bango at 10:19 am
2 Comments

++++-
4.1 rating from 41 votes

Dojo: The Definitive Guide; Degradable Reflection Widget

Category: DojoView the technorati tag: Dojo

[image]

Matthew Russell is blogging and screencasting work from Dojo: The Definitive Guide and has put together a piece on a simple, degradable reflection widget using dojo.gfx:

Reflection has been in vogue for a while now in user interfaces, and it wasn’t long ago that I saw a headline about a JavaScript library that streamlined a number of useful effects such as reflection — but alas, without the benefit of Dojo. Well, being the Dojo fanboy that I am, I immediately started to ponder how to accomplish some of these same effects using the dojox.gfx module, and a couple of hours later, I had prototyped a nice, degradable widget that seemed to do the job. By the way, that’s one of the things I love so much about Dojo: once you have a reasonable grip on it, you seldom, if ever, have to look somewhere else. More times than not, a great deal of your work is already done for you, and you just have to connect some of the dots. Remember: it’s all about the frameworks

But there’s always a catch: in this case it’s that IE users must have Silverlight installed for the widget to work; otherwise, it degrades back to the plain image. The reason is that VML, IE’s default gfx renderer, doesn’t support transparency in gradients. No transparent gradient, no nice fade out effect. Likewise, if JavaScript is not available (honestly, who does that?), it degrades down to the bare image. If you didn’t already know, the gfx module exposes an API that works across browsers by using whatever drawing engine is available. At the moment, renderers are available for canvas, VML, SVG, and Silverlight. That pretty much covers it. Adding support for another one should be straightforward: follow the API guidlines and write it.

The Silverlight requirement is interesting, isn't there a way to use IE behaviours to do a transparent gradient?

Watch the screencast to see it all in action.

Posted by Dion Almaer at 6:10 am
8 Comments

++---
2.7 rating from 29 votes

Tuesday, September 9th, 2008

Want to Use AIR? Read About the Dojo Toolbox Development Effort First

Category: AdobeView the technorati tag: Adobe, DojoView the technorati tag: Dojo

If you've ever been curious as to what goes into building a Adobe AIR application, then read Kevin Dangoor's account of how the Dojo Toolbox was built:

Building the Dojo Toolbox allowed us to dive into Adobe® AIR™, and to create a blended toolchain of JavaScript, PHP, Python and Rhino (JavaScript on the Java Virtual Machine) for developing an amazing desktop application using open web technologies. Read about how we built the Toolbox and what we really think of AIR.

His explanation provides a nice high-level view of some of the challenges but blends in some granular details to such topics as SQLlite querying and file management.

The second challenge was moving to AIR’s security model. AIR provides two different kinds of sandboxes that code can execute in: the “application†sandbox and the “non-application†sandbox. The windows that you see in the Dojo Toolbox all execute their code in the application sandbox. By AIR’s rules, that means that they’re allowed to access any site on the internet and any files on disk. What that code isn’t allowed to do is dynamically evaluate more JavaScript code.

This is a good read for anyone looking to explore Adobe AIR further and leverage the platform in the future.

Posted by Rey Bango at 10:30 am
1 Comment

+++--
3 rating from 25 votes

Custom fonts thanks to rendering SVG font definitions

Category: DojoView the technorati tag: Dojo, SVGView the technorati tag: SVG

[image]

Tom Trenka has a fantastic post on custom fonts with dojo.gfx that shows the SVG font definition implementation.

Part one of the article deals with painful, practical issues around the licensing of fonts. Tom discusses the various technical options out there, and then gets to the solution:

In general, the issues surrounding font usage have to do with the ability for someone to visit a web site, grab a specific file, and be able to reuse it without paying for a legitimate copy within any of the most commonly used programs (such as Office). Because of this concern, both the EOT and sIFR techniques work–because the fonts are embedded in a form that is not reusable in a common way.

One approach: the SVG Font Specification

Similarly, the SVG Font specification allows for the same concept—by working with a specific font definition, especially one that can be customized for the specific usage, the spec avoids most of the prickly issues surrounding licensing.

SVG fonts are relatively simple in concept; within the <defs> element, you define the main specifications of a font, and then you include specific glyph definitions. Optionally, you can include character-specific kerning information (the space between letters); some fonts include this type of hinting, and the SVG specification supports it.

JAVASCRIPT:
 
dojo.require("dojox.gfx");
dojo.require("dojox.gfx.VectorText");
 
var myfont = dojox.gfx.getVectorFont(someUri);
 
var s = dojox.gfx.createSurface(someNode, width, height);
var g = s.createGroup();
var phrase = myfont.draw(
    g,
    { text: "The rain in Spain falls mainly on the plain.", align: "middle" },
    { size: "3em" },
    "blue"
);
 

Very impressive. If you are a typography wonk, then you have probably watched Helvetica: The Movie:

This page contained an embedded video. Click here to view it.

Posted by Dion Almaer at 8:31 am
2 Comments

+++--
3.9 rating from 25 votes

Thursday, September 4th, 2008

Dojo Multifile Uploader with Flash

Category: DojoView the technorati tag: Dojo, FlashView the technorati tag: Flash

SitePen continues their work on Deft with a multi-file uploader:

The Dojo Toolkit now has support for multi-file uploads, thanks to the new Deft project. The dojox.form.FileUploader class embeds a hidden SWF file in the page which, when triggered, will open a system dialog that supports multiple file selection, and also file masks, which allows the user to filter their selection by file type.

Better yet, it’s fully degradable. If the user does not have version 9 or greater of the Flash Player installed it can, depending on the options you set, present the user with a standard HTML file input instead (or the option to install the latest Flash Player). The HTML form also supports multiple files, although due to browser restrictions, only one can be selected at a time. But they are all uploaded at once.

A major benefit to developers is the flexibility to supply your own styled upload button. For example, a paperclip icon toolbar button in an email application should not look like the standard file input with a text field followed by a “browse …†button. What inspired this design was working on projects where designers and clients would hand me a specification which would say, “the upload button looks like this“.

To use it? Fairly simple:

JAVASCRIPT:
 
var uploader = new dojox.form.FileInputFlash({
        uploadUrl:"http.localHost/FileUpload.php",
        button:myButton,
        uploadOnChange: false,
        selectMultipleFiles: true,
        fileMask: ["All Images", "*.jpg;*.jpeg;*.gif;*.png"],
        degradable: true
});
 

Want to try it out?

This comes after the YouTube uploader that uses Gears.

Posted by Dion Almaer at 10:09 am
7 Comments

+++--
3.6 rating from 29 votes

Friday, August 29th, 2008

The Ajax Experience Framework Summit

Category: DojoView the technorati tag: Dojo, PrototypeView the technorati tag: Prototype, The Ajax ExperienceView the technorati tag: The Ajax Experience, jQueryView the technorati tag: jQuery

We talked a few months ago about something new we're doing at the Ajax Experience this year: the "Framework Summit." Basically, we're providing space for Prototype, jQuery, and Dojo to hold their own half-day events on-site, and these events are free and open to the general public.

Since we announced the summit, the frameworks have created their agendas for their events for their events:

Dojo Developer Day:

- Welcome, Introductions (Alex Russell, Dylan Schiemann)
- Tutorial - Progressive Dojo (Peter Higgins)
- Presentation - DojoX GFX and FX (Matthew Russell)
- Presentation - Secrets of DojoX (Tom Trenka)
- Tutorial - Getting going ... Zend + Dojo (Matthew O'Phinney)
- Tutorial - Dijit Layouts In and Out (Nikolai Onken)
- Tutorial - Reusable code, Widgeting (Peter Higgins)
- Community - Getting Involved (Peter Higgins, Nikolai Onken)
- Lightning Demos - What do you have? Show us.

Prototype Developer Day

- Welcome, Introductions (Prototype Core members)
- Contributing docs (Christophe Porteneuve)
- Contributing code (Andrew Dupont)
- Prototype & Performance
- Extended Q&A (Prototype Core members)

jQuery Developer Day

- State of jQuery (Rey Bango)
- Progressively Enhancing the User Experience Using jQuery (Karl Swedberg)
- An In-Depth Look at jQuery UI (Paul Bakaus)
- jQuery Team Code Review (jQuery Team)

Other Frameworks?

Some have asked why we didn't also include Framework X, Y, and Z at the summit. We have a simple answer: we only had room for three frameworks so we choose the three most popular frameworks (according to every survey we've seen). If the concept is successful this time around, we hope to do it on a bigger scale next year.

Obviously we hope you can make it to the entire Ajax Experience event, but if you can't do that, consider coming to one of the Framework Summit events. See you there!

Posted by Ben Galbraith at 7:00 am
9 Comments

++---
2.6 rating from 22 votes

Wednesday, August 20th, 2008

WaveMaker 4: Point and Click Ajax

Category: DojoView the technorati tag: Dojo, UtilityView the technorati tag: Utility

WaveMaker Studio 4.0 the Ajax based visual development platform for creating web applications has been released. Version 4.0 includes a new look and feel, usability improvements, and a host of new features.

Building applications has been made easier by a syntax highlighting code editor, improved widget drag and drop, undo, simplified data binding, more flexible css styling, and numerous usability tweaks.

Working with databases and web services has become a lot simpler. Forms are generated automatically, and applications can be setup to save data with just a few clicks. A new REST service importer expands WaveMaker's already stellar support for web services. Developers can also create Java based services to connect a rich client to virtually any backend process.

The community version of WaveMaker Studio 4.0 is open source under the GPLv3 license and a fully supported enterprise version with role based access control is also available. Please go to www.wavemaker.com for more information.

Christopher Keene is obviously proud of this release if you look at his blog post talking through the 9 steps to an Ajax app.

He talks about the goals for WaveMaker 4:

Lowest learning curve - WaveMaker 4 is the easiest way to start building Ajax applications. Highest productivity - our WYSIWYG Ajax studio delivers best in class productivity for basic business applications. Sheer beauty - our Dojo-based Ajax client produces jaw-dropping user interfaces. Easiest mashup tool - nobody delivers a better mashup tool for web services Java classes and databases than WaveMaker.

And went on to talk about why he thinks the learning curve is low.

Posted by Dion Almaer at 9:56 am
8 Comments

+++--
3.6 rating from 15 votes

Monday, August 18th, 2008

Nice new Dojo aggregate effects

Category: DojoView the technorati tag: Dojo, UIView the technorati tag: UI

Dojo has some nice new compound effects in the works. Some of the new effects include block fades, disintergrate, explode, shear, and pinwheel.

Each effect can be tweaked with config such as:

The number of rows and columns in which to split the element The distance the pieces travel (as a multiple of the element's respective dimensions) Whether or not to fade the pieces in/out How much the effect should be randomized (a percentage) Whether or not the pieces should appear outside the element's boundaries

You will also see effects that work on the text within divs, as well as pieces of the div itself.

Posted by Dion Almaer at 6:33 am
11 Comments

++++-
4.1 rating from 34 votes

Monday, August 4th, 2008

Deft-fully using Dojo and Flex

Category: DojoView the technorati tag: Dojo, FlashView the technorati tag: Flash

Tom Trenka of SitePen has created a new top-level Dojo package called Deft which "focuses on ActionScript components created in support of the various projects within the Dojo Toolkit (mostly for DojoX). Deft source files are well organized based in part on the organization of other Dojo Toolkit projects, as well as the package structure required by the Flex compiler. Most Flex applications are based on the Flex AS3 Application class, which forces you to write at least one “controlling†MXML file in order compile your code. Instead of this, Deft components inherit primarily from the Sprite class — which allows you to write pure ActionScript code."

It contains a few goodies in it including the multi-image uploader, and pre-alpha quality support for dojox.gfx. Future plans include support for audio and video. "Hopefully Adobe will continue its current path towards being open source friendly, helping Deft flourish."

The article goes into detail on downloading the Flex SDK so you can build applications with it.

This is an interesting experiment in the melding of Flash and Ajax techniques. I would love to see the Flash player giving us more access via simple JavaScript, so we don't even need to create SWF bridges.

Posted by Dion Almaer at 6:38 am
5 Comments

+++--
3.9 rating from 16 votes

Monday, July 28th, 2008

Dojango: Two great tastes in one can!

Category: DojoView the technorati tag: Dojo, FrameworkView the technorati tag: Framework, PythonView the technorati tag: Python

[image]

Dojango, a template Django application that includes full Dojo support baked in, has been released by Tobias Klipstein, Nikolai Onken, and Wolfram Kriesing.

It provides capabilities to easily switch between several Dojo versions and sources (e.g. aol, google, local) Delivers helping utilities, that makes the development of rich internet applications in combination with dojo more comfortable. It makes the building of your own packed Dojo release easier. It includes a reusable django app that provides Dojo It includes helper functions, i.e. JSON conversion

Posted by Dion Almaer at 10:22 am
1 Comment

+++--
3.6 rating from 41 votes

Wednesday, July 23rd, 2008

window.name meet dojox.io.windowName

Category: AjaxView the technorati tag: Ajax, DojoView the technorati tag: Dojo, JavaScriptView the technorati tag: JavaScript

We have written about using window.name as a transport and Kris Zyp has just posted about how Dojo has created a new dojox.io.windowName module.

The window.name transport is a new technique for secure cross-domain browser based data transfer, and can be utilized for creating secure mashups with untrusted sources. window.name is implemented in Dojo in the new dojox.io.windowName module, and it is very easy to make web services available through the window.name protocol. window.name works by loading a cross-domain HTML file in an iframe. The HTML file then sets its window.name to the string content that should be delivered to the requester. The requester can then retrieve the window.name value as the response. The requested resource never has access to the requester’s environment (JavaScript variables, cookies, and DOM).

You can access it in a simple way:

JAVASCRIPT:
 
dojox.io.windowName.send(method, args); // simple method
 
// deferred result
var deferred = dojox.io.windowName.send("GET", {url:"http://somesite.com/resource"});
deferred.addCallback(function(result){
  alert("The request returned " + result);
});
 

Kris then goes on to show how to use this with Web services and other scenarios, and explains why you may be interested:

This technique has several advantages over other cross-domain transports:

It is secure, JSONP is not. That is, it is as secure as other frame based secure transports like fragment identifier messaging (FIM), and Subspace. (I)Frames also have their own security issues because frames can change other frames locations, but that is quite a different security exploit, and generally far less serious. It is much faster than FIM, because it doesn’t have to deal with small packet size of a fragment identifier, and it doesn’t have as many “machine gun†sound effects on IE. It is also faster than Subspace. Subspace requires two iframes and two local HTML files to be loaded to do a request. window.name only requires one iframe and one local file. It is simpler and more secure than Subspace and FIM. FIM is somewhat complicated, and Subspace is very complicated. Subspace also has a number of extra restrictions and setup requirements, like declaring all of the target hosts in advance and having DNS entries for a number of different particular hosts. window.name is very simple and easy to use. It does not require any plugins (like Flash) or alternate technologies (like Java).

Posted by Dion Almaer at 7:08 am
7 Comments

+++--
3.7 rating from 45 votes
Next Page »