20908
6407
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答ややり取りは受け付けていません。
jQueryまたは純粋なJavaScriptを使用して、ユーザーをあるページから別のページにリダイレクトするにはどうすればよいですか? 
1
2
次
jQueryを使用してリダイレクトするだけではありません
jQueryは必要ありません。window.location.replace(...)はHTTPリダイレクトを最もよくシミュレートします。
window.location.replace(...)は、window.location.hrefを使用するよりも優れています。これは、replace()がセッション履歴に元のページを保持しないため、ユーザーが終わりのないバックでスタックすることがないためです。ボタンの大失敗。
リンクをクリックする人をシミュレートする場合は、
location.href
HTTPリダイレクトをシミュレートする場合は、location.replaceを使用します
例えば:
// HTTPリダイレクトと同様の動作
window.location.replace( "http://stackoverflow.com");
//リンクをクリックするのと同様の動作
window.location.href = "http://stackoverflow.com";
|
警告:この回答は、考えられる解決策として提供されたものにすぎません。 jQueryが必要なため、明らかに最善の解決策ではありません。代わりに、純粋なJavaScriptソリューションをお勧めします。
$(location).attr( 'href'、 'http://stackoverflow.com')
|
ページをリダイレクトする標準の「バニラ」JavaScriptの方法
window.location.href = 'newPage.html';
またはもっと簡単に:(ウィンドウがグローバルであるため)
location.href = 'newPage.html';
リダイレクト時にHTTP_REFERERが失われているためにここにいる場合は、以下を読み続けてください。
(それ以外の場合は、この最後の部分を無視してください)
次のセクションは、多くのセキュリティ対策の1つとしてHTTP_REFERERを使用しているユーザー向けです(ただし、これは優れた保護対策ではありません)。 Internet Explorer 8以下を使用している場合、JavaScriptページリダイレクト(location.hrefなど)を使用すると、これらの変数は失われます。
以下では、HTTP_REFERERが失われないように、IE8以下の代替を実装します。それ以外の場合は、ほとんどの場合、window.location.hrefを使用できます。
HTTP_REFERER(URLの貼り付け、セッションなど)に対するテストは、リクエストが正当であるかどうかを判断するのに役立ちます。
(注:コメントのdroopのリンクに示されているように、これらのリファラーを回避/スプーフィングする方法もあります)
シンプルなクロスブラウザテストソリューション(Internet Explorer 9以降およびその他すべてのブラウザのwindow.location.hrefへのフォールバック)
使用法:redirect( 'anotherpage.aspx');
関数リダイレクト(url){
var ua = navigator.userAgent.toLowerCase()、
isIE = ua.indexOf( 'msie')!== -1
バージョン= parseInt(ua.substr(4、2)、10);
// Internet Explorer8以下
if(isIE && version <9){
var link = document.createElement( 'a');
link.href = url;
document.body.appendChild(link);
link.click();
}
//他のすべてのブラウザは標準のwindow.location.hrefを使用できます(Internet Explorer 8以下のようにHTTP_REFERERを失うことはありません)
そうしないと {
window.location.href = url;
}
}
|
これを行う方法はたくさんあります。
// window.location
window.location.replace( 'http://www.example.com')
window.location.assign( 'http://www.example.com')
window.location.href = 'http://www.example.com'
document.location.href = '/ path'
// window.history
window.history.back()
window.history.go(-1)
// window.navigate;古いバージョンのInternetExplorerのみ
window.navigate( 'top.jsp')
//おそらくブエノはありません
self.location = 'http://www.example.com';
top.location = 'http://www.example.com';
// jQuery
$(location).attr( 'href'、 'http://www.example.com')
$(window).attr( 'location'、 'http://www.example.com')
$(location).prop( 'href'、 'http://www.example.com')
|
これはすべてのブラウザで機能します。
window.location.href = 'your_url';
|
あなたがやろうとしていることについてもう少し説明的であるならば、それは助けになるでしょう。ページングされたデータを生成しようとしている場合、これを行う方法にはいくつかのオプションがあります。直接アクセスできるようにするページごとに個別のリンクを生成できます。
 1 
 2 
 3 
..。
例の現在のページは、コードとCSSで異なる方法で処理されることに注意してください。
ページングされたデータをAJAX経由で変更したい場合は、ここでjQueryが役立ちます。異なるページに対応する各アンカータグにクリックハンドラーを追加します。このクリックハンドラーは、AJAXを介して次のページに移動してフェッチし、新しいデータでテーブルを更新するjQueryコードを呼び出します。以下の例は、新しいページデータを返すWebサービスがあることを前提としています。
$(document).ready(function(){
$( 'a.pager-link')。click(function(){
var page = $(this).attr( 'href')。split(/ \?/)[1];
$ .ajax({
タイプ: 'POST'、
url: '/ path-to-service'、
データ:ページ、
成功:function(content){
$( '#myTable')。html(content); //置換
}
});
falseを返します。 //リンクを停止します
});
});
|
また、location.replace(URL)が最善の方法だと思いますが、リダイレクトについて検索エンジンに通知する場合(JavaScriptコードを分析してリダイレクトを確認しない場合)、rel = "canonical"メタを追加する必要があります。あなたのウェブサイトにタグを付けます。
HTML更新メタタグを含むnoscriptセクションを追加することも良い解決策です。このJavaScriptリダイレクトツールを使用してリダイレクトを作成します。また、HTTPリファラーを渡すためのInternetExplorerのサポートもあります。
遅延のないサンプルコードは次のようになります。
<!-ヘッドタグを開いた直後にこのスニペットを配置して、正しく機能するようにします->
<!-このコードはGNU GPLv3-の下でライセンスされています->
<!-このコードを自由にコピー、配布、使用することは許可されていますが、作者のクレジットを削除することは固く禁じられています->
<!-http://insider.zone/tools/client-side-url-redirect-generator/によって生成されます->
<!-リダイレクトの開始->