In 2010 I wrote a tutorial for loading JavaScript using the WordPress API. The main problem was how to enqueue a script only when needed; for example, when a certain shortcode was present on the page.
Since WordPress 3.3, you can skip all the Yoda acrobatics; just call wp_enqueue_script()
inside the shortcode handler:
add_shortcode('myshortcode', 'my_shortcode_handler');
function my_shortcode_handler($atts) {
wp_enqueue_script('my-script', plugins_url('my-script.js', __FILE__), array('jquery'), '1.0', true);
// actual shortcode handling here
}
If you’re interested in the gory details, here’s the trac ticket.