2011-09-17 15 views
2

私は主にhtmlとjavascriptを使用してWebアプリケーションを構築しようとしています。私は、URLを渡されるアプリ内のさまざまな変数の数を使用します。異なる変数を同じページに渡します

ここに問題がありますが、アプリケーションが現在開いているページにリンクしているリンクがありますが、変数を変更しただけですが、リンクをクリックしてもURL値は変わりません。とhrefを使うときの新しい値は、現在のページにリンクしたり、URLを変更したりすると、ページを強制的にリロードするクリーンな方法でしょうか?

現在、私はjQueryを使用して新しい変数でwindow.locationを設定してからページをリロードしています。

また、私はブラウザの戻るボタンを使用して同様の問題があります。それはURLを変更しますが、ページをリフレッシュしませんので、変数を1に設定すると2に変更され、それが動作し、ページは変数セット2でリロードされますが、ブラウザ履歴を使用して戻るとあなたの変数は1であるべきだと言われますが、ページをリフレッシュするまで、残りのページは変数が2のように動作します。

あるページを設定して、同じページからリンクに移動するか、ブラウザの履歴を前後に移動すると自動的に更新されるように設定していますか?ここで、要求通りの

は私が問題を抱えていたコードの部分の一部である:

最初のHTML要素は、ここで

var sel_tags=document.getElementsByName("selected_tags")[0]; 
var temp=""; 
if(Tags==null) 
{ 
    temp="\<p>All Notes\<\/p>"; 
} 
else//Tags not empty, and there are tag filters 
{ 
    var click= new Array("",a+ AtTagShow); 
    var GoTo="PageViewNotes.html?" 
    for (var i=0; i < Tags.length; i++) { 
     //if we are showing @tags, or a tag is not an @tag 
     if(AtTagShow||Tags[i][0]!="@") 
     { 
      click[0]=t+Tags[i]; 
      if (temp.length>0) 
     {temp+="\<span class=\"spacer\">\/<\/span>"}; 
    temp+="\<a class=\"selected_tags_label\""+ 
      "href=\""+GoTo+click.join("&")+"\">\<span>" 
    +Tags[i]+"\<\/span>\<\/a>" 
    } 
    }; 
}; 
sel_tags.innerHTML=temp; 

をONLOAD作成するためのコードは、のためにjqueryのコードでありますonclickの設定:

$(".selected_tags_label").live("click",function(){ window.location=(this.href); window.location.reload(); });

この問題の例のURLは次のようになります。 ページ。 ?HTMLタグ=#のばかげて、ばかげ要素上のURLをクリックして、#会議& AtTagShow =真 は、に変更します? page.htmlタグ=#ばかげ& AtTagShow =真

+1

コードを表示する必要があります。私が渡している変数は –

+0

です。変数には通常「#」記号または「@」記号があり、ユーザー定義の#タグと@タグを使用してユーザーのデータを並べ替えて整理します。これは、fetchnotesと呼ばれるスタートアップ企業のためのものです。詳しくは、fetchnotes.comをご覧ください。 – nadirku

答えて

0

jQuery History plug-inのためのを見てみましょうバック/フォワード履歴を持つようにサイトを設定します。これは、URL文字列内のクエリパラメータに基づいてデータを呼び出すページの状態を設定するのに役立ちます。

0

最新のブラウザ(IE8 +、Opera 10.6+、Fx 3.6+、Safari 5+)では、hashchangeというイベントがあります。

代わりにページをリロードすると、多分あなたはこのような何かで所望の結果を達成することができます

<script> 
document.onhashchange = function(){ 
    // do something 
} 
</script> 

MDNも役に立つかもしれません。

0

クエリパラメータ(URLの?マークの後にあるもの)を使用している場合、クエリパラメータを変更してwindow.locationをその新しいURLに設定すると、サーバーから新しいページが読み込まれる必要があります。

ハッシュ値(URLの後ろにあるもの)を使用している場合、ハッシュ値を変更しても新しいページが読み込まれることはありません。

したがって、値を変更するたびに新しいページをサーバーからロードする場合は、クエリパラメータを使用する必要があります。クエリーパラメーターを使用する場合は、前後にも正しく動作するはずです。

実際にサーバーのページをリロードするのを避けるために、このすべてをハッシュ値で実行しようとすると、ハッシュ変更を傍受して処理するコードを増やす必要があります。現代のブラウザでは、window.onhashchangeイベントを使用する古いブラウザよりも簡単です。詳細については、this page on MDNを参照してください。

0

ブラウザのページを再読み込みし、いつでもこれらのparts of the URLのいずれかがwindow.locationを介して更新されています

  1. ドメイン
  2. ポート
  3. パス
  4. クエリ文字列

しかし、それはしませんfragment_idの部分を変更すると、現在のドキュメントを読み込みます(これは単にarです)。現在のドキュメント内のHTML要素を参照)。

あなたが言うことから、あなたはfragment idを更新していると思います。

また、window.location.reload()メソッドがF5キーの機能を果たしていることがわかります。

1
window.location.href="page.html?Tags=#rediculous&AtTagShow=true" 
関連する問題