jQueryまたは純粋なJavaScriptを使用して、ユーザーをあるページから別のページにリダイレクトするにはどうすればよいですか?
window.location
window.location.href
動作の点では、と同じです。window.location
オブジェクトを返します。.href
が設定されていない場合、window.location
デフォルトでパラメータが変更されます.href
。結論:どちらを使用してもかまいません。
jQueryまたは純粋なJavaScriptを使用して、ユーザーをあるページから別のページにリダイレクトするにはどうすればよいですか?
window.location
window.location.href
動作の点では、と同じです。window.location
オブジェクトを返します。.href
が設定されていない場合、window.location
デフォルトでパラメータが変更されます.href
。結論:どちらを使用してもかまいません。
回答:
jQueryは不要でありwindow.location.replace(...)
、HTTPリダイレクトを最もよくシミュレートします。
window.location.replace(...)
良く使うよりあるwindow.location.href
ので、replace()
ユーザーは決して終わることのないバックボタンの大失敗で立ち往生しませんつまり、セッション履歴に発信ページを保持しません。
誰かがリンクをクリックするのをシミュレートしたい場合は、
location.href
HTTPリダイレクトをシミュレートしたい場合は、 location.replace
例えば:
// similar behavior as an HTTP redirect
window.location.replace("http://stackoverflow.com");
// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";
// Another method for doing redirecting with JavaScript is this:
window.location = "https://stackoverflow.com";
$(location).attr('href',url);
。window.location.href
一部のブラウザでは動作が一定していないようですが、実際には、私のバージョンのFirefoxでは完全に機能しません。window.location
IEのバージョンで直接設定できないとのことです。
警告:この回答は、可能な解決策としてのみ提供されています。jQueryが必要なため、これは明らかに最良のソリューションではありません。代わりに、純粋なJavaScriptソリューションを使用してください。
$(location).attr('href', 'http://stackoverflow.com')
window.location
は要素ではないため属性がないため、とんでもないことで無意味です。
.attr()
実際の属性(すなわち設定.setAttribute()
)
window.location.href = 'newPage.html';
window
グローバルなので)location.href = 'newPage.html';
リダイレクト時にHTTP_REFERER が失われるためにここにいる場合は、読み続けてください。
(そうでなければ、この最後の部分を無視してください)
次のセクションはHTTP_REFERER
、多くのセキュリティ対策の1つとして使用しているユーザーを対象としています(ただし、これは優れた保護対策ではありません)。Internet Explorer 8以下を使用している場合、JavaScriptのページリダイレクト(location.hrefなど)を使用すると、これらの変数が失われます。
以下では、IE_8以下の代替を実装して、HTTP_REFERERが失われないようにします。それ以外の場合は、ほとんど常に単純にを使用できますwindow.location.href
。
テストHTTP_REFERER
(URLを貼り付け、セッション、など)ができ、要求が正当であるかどうかを伝えるのに役立ちます。
(注: droopのリンクのコメントに記載されているように、これらのリファラーを回避/偽装する方法もあります)
シンプルなクロスブラウザーテストソリューション(Internet Explorer 9以降および他のすべてのブラウザーではwindow.location.hrefへのフォールバック)
使用法: redirect('anotherpage.aspx');
function redirect (url) {
var ua = navigator.userAgent.toLowerCase(),
isIE = ua.indexOf('msie') !== -1,
version = parseInt(ua.substr(4, 2), 10);
// Internet Explorer 8 and lower
if (isIE && version < 9) {
var link = document.createElement('a');
link.href = url;
document.body.appendChild(link);
link.click();
}
// All other browsers can use the standard window.location.href (they don't lose HTTP_REFERER like Internet Explorer 8 & lower does)
else {
window.location.href = url;
}
}
location.assign
か?アプリでIE8を使用していますが、HTTP_REFERER
ヘッダーは失われません。
これを行う方法はたくさんあります。
// 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; ONLY for old versions of Internet Explorer
window.navigate('top.jsp')
// Probably no bueno
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.navigate
古いIEのみです(Firefox / Chromeはこれをサポートしていません)。すべてのオプションを列挙したい場合は、を忘れないでくださいdocument.location
。
あなたがやろうとしていることについてもう少し説明的であるなら、それは助けになるでしょう。ページングされたデータを生成しようとしている場合、これを行う方法にはいくつかのオプションがあります。直接アクセスできるようにするページごとに個別のリンクを生成できます。
<a href='/path-to-page?page=1' class='pager-link'>1</a>
<a href='/path-to-page?page=2' class='pager-link'>2</a>
<span class='pager-link current-page'>3</a>
...
例の現在のページは、コードとCSSでは異なる方法で処理されることに注意してください。
ページングされたデータをAJAX経由で変更したい場合は、ここでjQueryを使用します。実行することは、異なるページに対応する各アンカータグにクリックハンドラーを追加することです。このクリックハンドラーは、AJAXを介して次のページに移動してフェッチし、新しいデータでテーブルを更新するjQueryコードを呼び出します。以下の例は、新しいページデータを返すWebサービスがあることを前提としています。
$(document).ready( function() {
$('a.pager-link').click( function() {
var page = $(this).attr('href').split(/\?/)[1];
$.ajax({
type: 'POST',
url: '/path-to-service',
data: page,
success: function(content) {
$('#myTable').html(content); // replace
}
});
return false; // to stop link
});
});
私もそれlocation.replace(URL)
が最善の方法だと思いますが、リダイレクトについて検索エンジンに通知したい場合(リダイレクトを確認するためにJavaScriptコードを分析しない場合)、rel="canonical"
メタタグをWebサイトに追加する必要があります。
HTML更新メタタグを含むnoscriptセクションを追加することも、良い解決策です。このJavaScriptリダイレクトツールを使用してリダイレクトを作成することをお勧めします。また、HTTPリファラーを渡すためのInternet Explorerサポートもあります。
遅延のないサンプルコードは次のようになります。
<!-- Place this snippet right after opening the head tag to make it work properly -->
<!-- This code is licensed under GNU GPL v3 -->
<!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited -->
<!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ -->
<!-- REDIRECTING STARTS -->
<link rel="canonical" href="https://yourdomain.com/"/>
<noscript>
<meta http-equiv="refresh" content="0;URL=https://yourdomain.com/">
</noscript>
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]-->
<script type="text/javascript">
var url = "https://yourdomain.com/";
if(typeof IE_fix != "undefined") // IE8 and lower fix to pass the http referer
{
document.write("redirecting..."); // Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix.
var referLink = document.createElement("a");
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();
}
else { window.location.replace(url); } // All other browsers
</script>
<!-- Credit goes to http://insider.zone/ -->
<!-- REDIRECTING ENDS -->
しかし、誰かがホームページにリダイレクトしたい場合は、次のスニペットを使用できます。
window.location = window.location.host
開発、ステージング、本番の3つの異なる環境がある場合に役立ちます。
これらの単語をChromeコンソールまたはFirebugのコンソールに入力するだけで、このウィンドウまたはwindow.locationオブジェクトを探索できます。
window.location = '/'
JavaScriptには、ブラウザーのアドレスバーに表示される現在のURLを取得および変更するための多くのメソッドが用意されています。これらのメソッドはすべて、WindowオブジェクトのプロパティであるLocationオブジェクトを使用します。次のように、現在のURLを持つ新しいLocationオブジェクトを作成できます。
var currentLocation = window.location;
URLの基本構造
<protocol>//<hostname>:<port>/<pathname><search><hash>
プロトコル-インターネット上のリソースへのアクセスに使用するプロトコル名を指定します。(HTTP(SSLなし)またはHTTPS(SSLあり))
hostname-ホスト名は、リソースを所有するホストを指定します。たとえば、www.stackoverflow.com。サーバーは、ホストの名前を使用してサービスを提供します。
ポート-インターネットまたはその他のネットワークメッセージがサーバーに到着したときに転送される特定のプロセスを認識するために使用されるポート番号。
パス名-パスは、Webクライアントがアクセスするホスト内の特定のリソースに関する情報を提供します。たとえば、stackoverflow.com / index.html。
query-クエリ文字列はパスコンポーネントに従い、リソースが何らかの目的で(たとえば、検索のパラメーターとして、または処理されるデータとして)利用できる情報の文字列を提供します。
hash-URLのアンカー部分。ハッシュ記号(#)が含まれます。
これらのLocationオブジェクトプロパティを使用すると、これらすべてのURLコンポーネントにアクセスできます
ページを変更したり、ユーザーを他のページにリダイレクトしたりする場合は、次のhref
ようにLocationオブジェクトのプロパティを使用できます
Locationオブジェクトのhrefプロパティを使用できます。
window.location.href = "http://www.stackoverflow.com";
Location Objectにもこれら3つのメソッドがあります
assign()およびreplaceメソッドを使用して、これらのような他のページにリダイレクトすることもできます
location.assign("http://www.stackoverflow.com");
location.replace("http://www.stackoverflow.com");
assign()とreplace()の違い-replace()メソッドとassign()method()の違いは、replace()が現在のドキュメントのURLをドキュメント履歴から削除することです。つまり、 「戻る」ボタンで元のドキュメントに戻ります。したがって、新しいドキュメントをロードしたい場合は、assign()メソッドを使用し、元のドキュメントに戻るオプションを提供します。
あなたはこのようにjQueryを使用して位置オブジェクトのhrefプロパティを変更できます
$(location).attr('href',url);
したがって、ユーザーを他のURLにリダイレクトできます。
基本的にjQueryは単なるJavaScriptフレームワークであり、次のようなことを行うためのものです、この場合のリダイレクト純粋なJavaScriptを使用するだけでよいので、その場合はバニラJavaScriptを使用する3つのオプションがあります。
1)ロケーション置換の使用と、ページの現在の履歴が置き換えられます。つまり、戻るボタンを使用して元のページに戻ることはできません。
window.location.replace("http://stackoverflow.com");
2)ロケーションの使用 割り当てを使用すると、履歴が保持されます。戻るボタンを使用すると、元のページに戻ることができます。
window.location.assign("http://stackoverflow.com");
3)上記のいずれかの方法を使用することをお勧めしますが、これは純粋なJavaScriptを使用する3番目のオプションになる可能性があります。
window.location.href="http://stackoverflow.com";
また、jQueryで関数を記述して処理することもできますが、これは1行の純粋なJavaScript関数であるためお勧めしません。また、すでにウィンドウスコープにいる場合は、ウィンドウなしで上記のすべての関数を使用window.location.replace("http://stackoverflow.com");
できます。location.replace("http://stackoverflow.com");
また、以下の画像にそれらすべてを示しています。
assign()
overの使用href=
もお勧めします。
を使用して設定できるはずです window.location
です。
例:
window.location = "https://stackoverflow.com/";
この件に関する過去の投稿は次のとおりです。別のWebページにリダイレクトするにはどうすればよいですか?
始める前に、jQueryはDOM操作に使用されるJavaScriptライブラリーです。したがって、ページリダイレクトにjQueryを使用しないでください。
Jquery.comからの引用:
古いバージョンのブラウザーではjQueryは大きな問題なく動作する可能性がありますが、jQueryを積極的にテストすることはなく、通常、それらに表示される可能性のあるバグを修正しません。
ここで見つかりました:https : //jquery.com/browser-support/
そのため、jQueryは、下位互換性を確保するための包括的なソリューションではありません。
未加工のJavaScriptを使用する次のソリューションは、すべてのブラウザーで機能し、長い間標準であったため、クロスブラウザーサポート用のライブラリは必要ありません。
このページは3000ミリ秒後にGoogleにリダイレクトされます
<!DOCTYPE html>
<html>
<head>
<title>example</title>
</head>
<body>
<p>You will be redirected to google shortly.</p>
<script>
setTimeout(function(){
window.location.href="http://www.google.com"; // The URL that will be redirected too.
}, 3000); // The bigger the number the longer the delay.
</script>
</body>
</html>
さまざまなオプションは次のとおりです。
window.location.href="url"; // Simulates normal navigation to a new page
window.location.replace("url"); // Removes current URL from history and replaces it with a new URL
window.location.assign("url"); // Adds new URL to the history stack and redirects to the new URL
window.history.back(); // Simulates a back button click
window.history.go(-1); // Simulates a back button click
window.history.back(-1); // Simulates a back button click
window.navigate("page.html"); // Same as window.location="url"
置換を使用すると、履歴に存在しなかったかのように、戻るボタンはリダイレクトページに戻りません。ユーザーがリダイレクトページに戻ることができるようにする場合は、window.location.href
またはを使用します。window.location.assign
。ユーザーがリダイレクトページに戻ることができるオプションを使用する場合は、リダイレクトページに入るとリダイレクトされます。したがって、リダイレクトのオプションを選択するときは、それを考慮してください。ユーザーがアクションを実行したときにのみページがリダイレクトされる状況では、[戻る]ボタンの履歴にページが含まれていても問題ありません。ただし、ページが自動リダイレクトする場合は、replaceを使用して、リダイレクトが送信するページにユーザーが強制的に戻らずに戻るボタンを使用できるようにする必要があります。
次のように、メタデータを使用してページリダイレクトを実行することもできます。
メタリフレッシュ
<meta http-equiv="refresh" content="0;url=http://evil.com/" />
メタの場所
<meta http-equiv="location" content="URL=http://evil.com" />
BASEハイジャック
<base href="http://evil.com/" />
疑いを持たないクライアントを彼らが行きたくないかもしれないページにリダイレクトするためのより多くのメソッドがこのページにあります(それらの1つはjQueryに依存していません):
https://code.google.com/p/html5security/wiki/RedirectionMethods
私も指摘したいのですが、人々は無作為にリダイレクトされることを好みません。絶対に必要な場合にのみ、ユーザーをリダイレクトします。人をランダムにリダイレクトし始めると、二度とあなたのサイトにアクセスすることはありません。
次の段落は架空のものです。
悪意のあるサイトとして報告されることもあります。それが起こった場合、人々があなたのサイトへのリンクをクリックすると、ユーザーのブラウザはあなたのサイトが悪意があると警告するかもしれません。また、サイトでのユーザーエクスペリエンスが悪いと報告された場合、検索エンジンが評価を下げ始める可能性もあります。
リダイレクトに関するGoogleウェブマスターガイドラインを確認してください:https : //support.google.com/webmasters/answer/2721217?hl=ja&ref_topic=6001971
ここにあなたをページから追い出す楽しい小さなページがあります。
<!DOCTYPE html>
<html>
<head>
<title>Go Away</title>
</head>
<body>
<h1>Go Away</h1>
<script>
setTimeout(function(){
window.history.back();
}, 3000);
</script>
</body>
</html>
2つのページの例を組み合わせると、再ルーティングの小さなループが発生し、ユーザーがサイトを二度と使用したくないことが保証されます。
あなたはjQueryなしでそれを行うことができます:
window.location = "http://yourdomain.com";
そしてjQueryだけが必要な場合は、次のようにすることができます:
$jq(window).attr("location","http://yourdomain.com");
#jQuery / JavaScriptを使用したHTMLページのリダイレクト
このサンプルコードを試してください:
function YourJavaScriptFunction()
{
var i = $('#login').val();
if (i == 'login')
window.location = "login.php";
else
window.location = "Logout.php";
}
として完全なURLを指定する場合window.location = "www.google.co.in";
。
元の質問:「jQueryを使用してリダイレクトする方法は?」したがって、答えはjQuery >>無料の使用例を実装します。
JavaScriptでページにリダイレクトするには:
window.location.href = "/contact/";
または、遅延が必要な場合:
setTimeout(function () {
window.location.href = "/contact/";
}, 2000); // Time in milliseconds
jQueryを使用すると、Webページから要素を簡単に選択できます。ページで必要なものをすべて検索し、jQueryを使用して特殊効果を追加したり、ユーザーアクションに反応したり、選択した要素の内部または外部にコンテンツを表示および非表示にしたりできます。これらのタスクはすべて、要素またはイベントを選択する方法を知ることから始まります。
$('a,img').on('click',function(e){
e.preventDefault();
$(this).animate({
opacity: 0 //Put some CSS animation here
}, 500);
setTimeout(function(){
// OK, finished jQuery staff, let's go redirect
window.location.href = "/contact/";
},500);
});
誰かが10000行のコードでスクリプト/プラグインを書いたと想像してください。jQueryを使用すると、1行または2行でこのコードに接続できます。
それで、問題はリダイレクトページを作る方法であり、ウェブサイトにリダイレクトする方法ではありませんか?
これにはJavaScriptを使用するだけで済みます。以下は、動的リダイレクトページを作成する小さなコードです。
<script>
var url = window.location.search.split('url=')[1]; // Get the URL after ?url=
if( url ) window.location.replace(url);
</script>
したがって、このスニペットをredirect/index.html
Webサイトのファイルに挿入するだけで、そのように使用できます。
http://www.mywebsite.com/redirect?url=http://stackoverflow.com
そして、そのリンクにアクセスすると、自動的にstackoverflow.comにリダイレクトされます。
そして、それはあなたがJavaScriptで単純なリダイレクトページを作る方法です
編集:
注意すべきことも1つあります。私が追加したwindow.location.replace
私はそれがリダイレクトページに合うと思うので、私のコードでは、しかし、あなたが使用している場合ことを知っている必要がありますwindow.location.replace
し、あなたがリダイレクトされます、あなたのブラウザの[戻る]ボタンを押したときに、それはなりません、それはなりますバックリダイレクトページになった、と前のページに戻って、この小さなデモを見てください。
例:
プロセス:ストアホーム => リダイレクトページがGoogleに => グーグルを
googleの場合:google => ブラウザの戻るボタン => ストアホーム
したがって、これがあなたのニーズに合っているなら、すべてがうまくいくはずです。ブラウザーの履歴にリダイレクトページを含める場合は、これを置き換えます
if( url ) window.location.replace(url);
と
if( url ) window.location.href = url;
JavaScriptとjQueryでは、次のコードを使用して、1つのページを別のページにリダイレクトできます。
window.location.href="http://google.com";
window.location.replace("page1.html");
$({jQueryCode:(url)=>location.replace(url)}).attr("jQueryCode")("http://example.com")
私を殺さないでください、これは冗談です。それは冗談だ。冗談だよ。
これは、「jQueryを使用する」ソリューションを求めたという意味で「質問への回答を提供」しました。
Ferrybigは明らかに冗談を説明する必要があります(まだ冗談ですが、レビューフォームのオプションは限られていると確信しています)。
他の答えはattr()
、location
またはwindow
オブジェクトでjQueryを不必要に使用しています。
この答えはそれを悪用しますが、もっとばかげています。これを使用attr()
して場所を設定する代わりに、これを使用して場所を設定する関数を取得します。
jQueryCode
jQueryが何もないにもかかわらず、関数に名前が付けられ、関数を呼び出すsomethingCode
、特に何かが言語でなくても、は恐ろしいことです。
「85バイト」は、Code Golfへの参照です。ゴルフは明らかにコードゴルフ以外でやるべきことではなく、さらにこの答えは明らかに実際にはゴルフされていません。
基本的に、うんざり。
JavaScript:
window.location.href='www.your_url.com';
window.top.location.href='www.your_url.com';
window.location.replace('www.your_url.com');
jquery:
var url='www.your_url.com';
$(location).attr('href',url);
$(location).prop('href',url);//instead of location you can use window
window.location.href="http://google.com";
window.location.replace("http://google.com");
$(location).attr('href', 'http://google.com');
jQuery.fn.redirectTo = function(url){
window.location.href = url;
}
jQuery(window).redirectTo("http://google.com");
これは時間遅延のリダイレクトです。遅延時間は任意に設定できます。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Your Document Title</title>
<script type="text/javascript">
function delayer(delay) {
onLoad = setTimeout('window.location.href = "http://www.google.com/"', delay);
}
</script>
</head>
<body>
<script>
delayer(8000)
</script>
<div>You will be redirected in 8 seconds!</div>
</body>
</html>