2011-11-08 22 views
0

私のURLの形式は次のようである:Javascript:URLが変更されているかどうかを確認しますか?

http://domain.in/home 
http://domain.in/books/notes 
http://domain.in/books/notes/copy 

私は、URLが変更されたりしていないかどうかをチェックするためにwindow.loadにjavascript関数を呼び出しました。

URLが変更された場合は、コードが実行されます。それ以外の場合は、5秒後に再度チェックされます。

私のコードは次のとおりです。

window.onload = function(){ 
    setInterval(function(){ 
     page_open(); 
    }, 5000); 
}; 

function page_open(){ 
    var pages=unescape(location.href); 
    pages=pages.substr(pages.lastIndexOf("studysquare.in/") + 15); 

    // gives book if url is http://studysquare.in/book 
    //alert("pages"+pages+"\n\n recent"+recent); 

    if (pages==recent) { return;  } 
    recent=pages; 

    alert("Reached down now the code will execute."); 
} 

問題になりました:URLが似ているとき:

http://domain.in/book 

シングルレベルの深さ、そして、すべてが正常に動作します。 URLは

http://domain.in/book/copy or http://domain.in/book/copy/notes 

のようなものであるときしかし、その後、何も ..... javascriptのすべての5秒で3レベルの深URLの変更をチェックするために、任意の助けを働きませんか? :)

こんにちは申し訳ありませんが、私はそのことを忘れてしまいました。domain.in/の後に任意の長さのURLが書かれているとページをナビゲートすることができません。 URL変更によって影響を受けません...

+0

あなたは、コードのコンテキストが破棄され、新しいページが読み込まれた瞬間に新しいコンテキストが作成されることを認識していますか?現在のインスタンスがナビゲートすると実行が停止するため、コードは変更を検出しません。 – Polynomial

+0

こんにちは、申し訳ありません。私は.htaccessファイルで、domain.inが書かれた後の任意の長さのURLがある場合、そのページをナビゲートすることはできません。 URL変更によって... –

+0

URLが変更されているかどうかを確認して、何を達成しようとしていますか? – grc

答えて

1

ユーザーがURLを変更すると、ブラウザは現在のページ全体(JavaScriptを含むため、実行を停止します)をアンロードして、次のページを読み込みます。ページの変更を横断してjavascriptを実行することはできません。別のページに移動しているときと同じように、URLの変更を監視することはできません。

URLの変更をキャッチする最も良い方法は、ユーザーがリクエストした新しいページを読み込む直前にブラウザがページをアンロードするときに、本体オブジェクトにonUnloadイベントを追加することです最近のページビューを追跡するという目標を達成するのに役立つとは思っていません。

+0

こんにちは私はこれを知っている...理由は、2または3レベルの深いURLを変更すると、私のページを変更しないために教えてください...返信ありがとう –

+0

それは決して呼び出されないので変更されません。コンテキストが破棄され、次のページでコードが呼び出されるまでに「古いURL」は存在しません。実行中のプロセスのように考えてください。別のページに移動すると、プロセスが強制終了され、プロセスの新しいインスタンスが開始されます。変数やデータは保持されず、すべて破棄されます。 – Polynomial

0

jQuery addressのようなヒストリープラグインのようなサウンドは、多くのお手伝いをします。

URLが変更されたときにイベントを処理できるため、必要に応じて新しいコンテンツを読み込むことができます。