diff --git a/modules/openid/openid.js b/modules/openid/openid.js
index ce9de89..2455ffb 100644
--- a/modules/openid/openid.js
+++ b/modules/openid/openid.js
@@ -4,7 +4,7 @@ Drupal.behaviors.openid = function (context) {
   var $openidElements = $("#edit-openid-identifier-wrapper, li.user-link");
 
   // This behavior attaches by ID, so is only valid once on a page.
-  if (!$("#edit-openid-identifier.openid-processed").size() && $("#edit-openid-identifier").val()) {
+  if (!$("#edit-openid-identifier.openid-processed").size() && ($("#edit-openid-identifier").val() || location.hash == '#openid-login')) {
     $("#edit-openid-identifier").addClass('openid-processed');
     $loginElements.hide();
     // Use .css("display", "block") instead of .show() to be Konqueror friendly.
diff --git a/modules/openid/openid.module b/modules/openid/openid.module
index f1885df..290de54 100644
--- a/modules/openid/openid.module
+++ b/modules/openid/openid.module
@@ -87,11 +87,11 @@ function openid_form_alter(&$form, $form_state, $form_id) {
 
     $items = array();
     $items[] = array(
-      'data' => l(t('Log in using OpenID'), '#'),
+      'data' => l(t('Log in using OpenID'), '#openid-login', array('external' => TRUE)),
       'class' => 'openid-link',
     );
     $items[] = array(
-      'data' => l(t('Cancel OpenID login'), '#'),
+      'data' => l(t('Cancel OpenID login'), '#', array('external' => TRUE)),
       'class' => 'user-link',
     );
 
