ColdFusion.navigate works with non-CF generated UI items

Scott just pinged me with an interesting question - can you use ColdFusion.navigate with a "normal" div or does it only work with items generated by ColdFusion 8 (cfdiv, cfwindow, cfpod, etc)? We both tested and discovered that - yes - you certainly can use it with a "vanilla" div - but you must get ColdFusion to preload the proper JavaScript files. Consider this simple demo:

<cfajaximport />

<script>
function doit() {
   ColdFusion.navigate('test3.cfm','booger')
}
</script>

<a href="javaScript:doit()">load the booger</a><br />
<div id="booger"></div>

Starting from the bottom up - the div, booger, is our container. I have a test link above it that runs the doit function. doit() then simply uses ColdFusion.navigate. If you just use that portion of the file, though, you will get a client-side JavaScript error saying that ColdFusion doesn't exist. You need to tell ColdFusion to load the the Ajax libraries. This can be done with a simple, empty cfajaximport tag.

Not sure how useful this is, but if you don't have Spry or jQuery loaded and need a simple and fast way to load data via Ajax, this would work well.

Comments

Patrick's Gravatar Not sure this is directly related but is it possible to reset a div or cfdiv back to what was originally in it without it behind saved/bound in another file? For example I have a button that when you click it changes MYDIV to be bound to another page, but I also want to have a reset button that changes MYDIV back to its original contents, ie: <cfdiv id="mydiv">stuff that was originally here</cfdiv>
# Posted By Patrick | 12/16/08 6:17 PM
Francois Levesque's Gravatar Patrick,

If you don't want to save the original contents in a file, you can always assign it's html content in a javascript variable.

i.e: var oldContents = document.getElementById( "booger" ).innerHTML;

or, with jQuery: var oldContents = $( "#booger" ).html();

then, with your reset, you could just reassign the contents to your div

document.getElementById( "booger" ).innerHTML = oldContents;

or

$( "#booger" ).html( oldContents );
# Posted By Francois Levesque | 12/17/08 6:40 AM
Yaron Kohn's Gravatar Wow...I actually knew something before Ray did. I shall remember this day....
# Posted By Yaron Kohn | 12/17/08 1:31 PM
Raymond Camden's Gravatar I actually knew this four years ago, I was just holding on to it until I had a slow blog day.

:P
# Posted By Raymond Camden | 12/17/08 1:34 PM