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.
Archived Comments
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>
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 );
Wow...I actually knew something before Ray did. I shall remember this day....
I actually knew this four years ago, I was just holding on to it until I had a slow blog day.
:P
Ray, need your help!
I have a <script> on the page I'm loading using ColdFusion.navigate but it seems CF just ignore it when it posts the content on the containert I specified on the ColdFusion.navigate.
Is this the normal behavior? Is there a workaround? Or it's just me doing something wrong?
Most likely you are running into the issue with Ajax-loaded content and JS. You can't define functions using function syntax on a page that is loaded via Ajax. You must create functions using this syntax:
foo = new function() { ..... }