2014-11-21 3 views
0

У меня проблемы с любой возможной формой чтения текущего местоположения браузера в Firefox (v 33.1). location.href, window.location.href и document.location.href являются «неопределенными», если их читают «готовые» функции jQuery. То же самое для .hash и т. Д. Однако в консоли они возвращают именно то, что они должны.location.href is undefined

$(function(){$("a").unbind("click").click($S.r);$S.r();}); 
$S={ 
    r: function() 
    { 
     try{$I=((typeof this.href)?this.href:location.href).replace(/^.*?#/,'');}catch($E){console.error($E);setTimeout(function(){$S.r();},250);return false;} 
     $S.c($I); 
    }, 
    c: function($I) 
    { 
     $("content").css({"opacity":"0"}); 
     setTimeout(function() 
     { 
      $("content spacer").html($S.h($I)); 
      $("content").css({"opacity":"1"}); 
     },1000); 
    }, 
    h: function($I) 
    { 
     switch ($I) 
     { 
      case "impressum": return "Impressum"; 
      case "email": return "E-Mail"; 
      case "mitglieder": return "Familien-Mitglieder"; 
      default: return "Startseite"; 
     } 
    } 
}; 

URL: http://saris.it

То, что я хочу добиться:/# тест должен вызвать скрипт для загрузки контента для теста Это работает при нажатии на ссылку. В pageload это НЕ. Соответствующие vars заполняются в консоли. Они НЕ в jQuery. Использование setTimeout НЕ помогло.

Как мне решить эту проблему?

ответ

2

Ошибка здесь:

((typeof this.href)?this.href:location.href).replace(/^.*?#/,'') 

Try:

((typeof this.href != 'undefined')?this.href:location.href).replace(/^.*?#/,'') 

Неопределенное не location.href, но this.href,
, потому что ваш typeof this.href является строка 'undefined', это правда, когда Comparision.

+0

Должно быть, удалил это с помощью любого из моих шагов отмены, случайно. Добавлено его обратно, однако, location.href все еще «undefined» –

+0

Консоль четко заявляет: 'TypeError: location.href isdefined' –

+1

Однако я не вижу эту ошибку на вашем сайте .. И' location.href' является правильно определено. Попробуйте очистить кеш. –