I'm close...but not quite there. I look at the page source, and the reference to my js file is there, as is a CDATA block listing all the settings contents (don't know if that -should- be there, but it's handy), which shows that what I passed in the settings array is there. I also have the block being inserted into the page. What is not there is the content of the .js file. I've tried the two drupal_add_js calls in both possible order. Here's what I have: mymodule function mymodule_block($op = 'list', $delta = 0, $edit = array()) { switch ($op) { case 'list': $block[$delta] = array( 'info' => t('Mymodule Block'), 'cache' => FALSE, ); return $block; break; case 'view': $block['subject'] = "Mymodule Block"; $block['content'] = _make_block(); return $block; break; } } function _make_block() { if (isset($_SESSION['setmyblock'])) { drupal_set_message('setting'); $settings = array( 'mymodule' => array( 'name' => $_SESSION['mymodule_name'], 'total' => $_SESSION['mymodule_total'] ) ); drupal_add_js($settings, 'setting'); drupal_add_js(drupal_get_path('module', 'mymodule') .'/mymodule.js', 'module', 'header', FALSE, FALSE); $block = 'test'; } return $block; } mymodule.js <script type="text/javascript" src="http://www.mydomain.com/test.js"></script> <script type="text/javascript"> var settings = Drupal.settings.mymodule; myfunction(settings.name,settings.total); </script>