diff --git a/misc/ajax.js b/misc/ajax.js
index bb4a6e1..1241a14 100644
--- a/misc/ajax.js
+++ b/misc/ajax.js
@@ -131,7 +131,12 @@ Drupal.ajax = function (base, element, element_settings) {
   //      E.g.: ?q=path/nojs&destination=foobar
   // 5. /nojs# - Followed by a fragment.
   //      E.g.: path/nojs#myfragment
-  this.url = element_settings.url.replace(/\/nojs(\/|$|\?|&|#)/g, '/ajax$1');
+  if($.isArray(element_settings.url)) {
+    element_settings.url = element_settings.url[0];
+  }
+  if ($.isFunction(element_settings.url.replace)) {
+    this.url = element_settings.url.replace(/\/nojs(\/|$|\?|&|#)/g, '/ajax$1');
+  }
   // If the 'nojs' version of the URL is trusted, also trust the 'ajax' version.
   if (Drupal.settings.urlIsAjaxTrusted[element_settings.url]) {
     Drupal.settings.urlIsAjaxTrusted[this.url] = true;