2011-10-29 12 views
0

私はすべての私のjavascriptコードを1つのミニライブラリに入れています。 特定のページURLに対してのみ実行される関数がいくつかありますが、href属性を持たず、代わりにhref属性がクリックされた要素IDを持つリンクが更新されると、関数は実行されません。 問題は何ですか? たとえば、 URLはhttp://localhost/pheedbak/users/home ですがhttp://localhost/pheedbak/users/home#directed-pheedsへのURLが変更され、機能がページ固有のjavascript関数

を実行していないときのコードは、この

url = "http://localhost/pheedbak/users/home"; 

    if(window.location.href == url) 
    { 
     pheeds.LoadLatestPheeds(); 
    } 
+1

あなたは何を意味するかわかりません。例? –

+0

これは、スクリプトが通常のURLでリンク要素に依存しており、アンカーリンクで失敗することを意味します。 – katspaugh

+0

@katspaugh extacly my point – MrFoh

答えて

2

あなたは、これがあってもマッチします、これを試すことができますのようなものであるとき それは動作します他のクエリ文字列またはハッシュIDがあります

if(window.location.href.indexOf(url) > -1) 
+2

この例では問題なく動作するでしょうが、このタイプのメソッドを使用してURLを照合するのはベストプラクティスではありません。たとえば、これは "/ path/to/whatever?url = http:// locahost/pheedbak/users/home"というクエリにも一致し、相対パスを使用している場合は一致がすべてオフになります。できるだけ正確にすることをお勧めします。もちろん、彼の例のように、これは実際には起こりそうにないですが、それがベストプラクティスのすべてです。マーフィーの法律の防止。 – Naatan

3

これは動作するはずです - だけ#

前のものを見て210
if(window.location.href.split("#")[0] == url) 

または

if(window.location.href.split("#",1)[0] == url) 

NB。テストされていない - 誤植/バグを含んでいる可能性があります。

2

重要な部分を取り除く必要があります。例えば

var url = 'pheedbak/users/home'; 

if(window.location.href.replace(/.*?\/\/.*?\/(.*?)(?:\#|\?).*/,'$1') == url) 
{ 
    pheeds.LoadLatestPheeds(); 
} 

これもGET変数を含むURLので動作します(例。/ユーザー/ホーム?ID = 2)とは関係なく、ドメインまたはプロトコルの動作します。

ドメイン&プロトコル依存バージョン:

var url = 'http://localhost/pheedbak/users/home'; 

if(window.location.href.replace(/(.*?)(?:\#|\?).*/,'$1') == url) 
{ 
    pheeds.LoadLatestPheeds(); 
} 
関連する問題