Как да се пренасочи към друга уеб страница?

Как да пренасочите потребител от една страница към друга, използвайки jQuery или чист javascript?

7735
02 февр. зададен от venkatachalam 02 фев 2009-02-02 15:54 '09 в 15:54 2009-02-02 15:54
@ 80 отговора
  • 1
  • 2
  • 3

Човек не просто пренасочва използването на jQuery

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"; 
13553
03 февр. отговорът е даден от Райън Макгиъри 03 Feb. 2009-02-03 07:24 '09 в 7:24 am 2009-02-03 07:24

ВНИМАНИЕ: Този отговор беше просто предоставен като възможно решение; това очевидно не е най-доброто решение, тъй като за това се изисква jQuery. Вместо това, предпочитайте чисто решение за JavaScript.

border=0
1540
28 окт. отговор, даден от Boris Guéry 28 октомври 2009-10-28 19:35 '09 в 19:35 2009-10-28 19:35

Стандартен метод за пренасочване на страници с javascript на „ванилия“:

window.location.href = 'newPage.html';


Ако сте тук, защото губите HTTP_REFERER при пренасочване, продължете да четете:


Следващият раздел е предназначен за тези, които използват HTTP_REFERER като една от многото сигурни мерки (въпреки че това не е голяма защитна мярка). Ако използвате Internet Explorer 8 или по-ниска, тези променливи се губят, когато използвате всякаква форма на пренасочване на страницата на JavaScript (location.href и т.н.).

По-долу ще приложим алтернатива за IE8 и по-долу, така че да не загубим HTTP_REFERER. В противен случай почти винаги можете да използвате window.location.href .

Тестването през HTTP_REFERER (URL вмъкване, сесия и т.н.) може да бъде полезно при определяне дали дадена заявка е легитимна. ( Забележка: Има и начини за заобикаляне / измама на тези препратки, както е отбелязано в описанието на връзките с грешка)


Просто решение за крос-браузър тестване (връщане към window.location.href за Internet Explorer 9+ и всички останали браузъри)

Употреба: 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; } } 
556
27 июля '12 в 17:41 2012-07-27 17:41 отговорът е даден от Mark Pieszak - DevHelp.Online Юли 27 '12 в 17:41 2012-07-27 17:41

Има много начини да направите това.

 // 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') 
369
28 янв. Говинд Сингх отговори на 28 януари 2014-01-28 07:28 '14 в 7:28 2014-01-28 07:28

Работи за всеки браузър:

 window.location.href = 'your_url'; 
292
23 окт. отговор на Фред на 23 октомври. 2010-10-23 02:45 '10 в 2:45 ч. 2010-10-23 02:45

Би било от полза, ако сте малко по-визуални за това, което се опитвате да направите. Ако се опитвате да генерирате странични данни, има някои опции как да го направите. Можете да създадете отделни връзки за всяка страница, с която искате директно да се свържете.

 <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. Това, което бихте направили, е да добавите манипулатор за всяко кликване, който съответства на другата страница. Този манипулатор ще извика някои jQuery код, който е изпратен и показва следващата страница чрез AJAX и актуализира таблицата с нови данни. В примера по-долу се приема, че имате уеб услуга, която връща нови данни за страници.

 $(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 }); }); 
273
02 февр. Отговорът е даден от tvanfosson 02 Feb. 2009-02-02 16:18 '09 в 16:18 2009-02-02 16:18

Аз също мисля, че location.replace(URL) е най-добрият начин, но ако искате да уведомите търсачките за своето пренасочване (те не анализират JavaScript кода, за да видят пренасочването), трябва да добавите мета rel="canonical" маркер към сайта си.

Добавянето на секция noscript с мета тагове за актуализация в HTML също е добро решение. Предлагам ви да използвате този инструмент за пренасочване на javascript, за да създавате пренасочвания. Той също така има поддръжка на Internet Explorer за изпращане на HTTP референт.

Примерният код без забавяне изглежда така:

 <!-- 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 --> 
232
25 апр. отговорът е даден от Patartics Milán на 25 април 2013-04-25 13:12 '13 в 13:12 2013-04-25 13:12

Но ако някой иска да пренасочи към началната страница, той може да използва следния фрагмент.

 window.location = window.location.host 

Би било полезно, ако имате три различни среди: развитие, производство и производство.

Можете да прегледате този прозорец или обекта window.location, като просто поставите тези думи в конзолата Chrome или Firebug .

206
30 окт. Отговорът е даден от Nadeem Yasin на 30 октомври. 2012-10-30 15:15 '12 в 15:15 2012-10-30 15:15

JavaScript ви осигурява много методи за извличане и промяна на текущия URL адрес, показан в адресната лента на браузъра ви. Всички тези методи използват обекта Location, който е свойство на обекта Window. Можете да създадете нов обект за местоположение с текущия URL, както следва.

 var currentLocation = window.location; 

Основна структура на URL адресите

 <protocol>//<hostname>:<port>/<pathname><search><hash> 

2019

195
23 дек. Nikhil Agrawal отговори на 23 декември 2013-12-23 16:35 '13 в 16:35 2013-12-23 16:35

Трябва да се конфигурира само с window.location .

например:

 window.location = "https://stackoverflow.com/"; 

Ето предишната статия на тази тема:

Как да се пренасочи към друга уеб страница?

182
16 февр. Отговорът е даден Newse 16 Feb. 2014-02-16 17:42 '14 в 17:42 2014-02-16 17:42

Всъщност, jQuery е само инфраструктура на JavaScript и за да изпълни някои неща, като пренасочване в този случай, можете просто да използвате чист JavaScript, така че в този случай имате 3 опции за използване на ванилия JavaScript:

1) Определянето на местоположение чрез размяна, което замества текущата история на страницата, означава, че не можете да използвате бутона за връщане назад, за да се върнете към оригиналната страница.

 window.location.replace("http://stackoverflow.com"); 

2) Използвайки местоназначението , то ще запази историята за вас, а с помощта на бутона за връщане ще можете да се върнете към оригиналната страница:

 window.location.assign("http://stackoverflow.com"); 

3) Препоръчвам ви да използвате един от тези предишни методи, но това може да е третата опция, използвайки чистата javascript:

 window.location.href="http://stackoverflow.com"; 

Можете също така да напишете функция в jQuery, за да я обработвате, но това не се препоръчва, защото това е само една линия от JavaScript функцията, можете да използвате всички функции, изброени по-горе, без прозорец, ако вече сте в обхвата на прозореца, например window.location.replace("http://stackoverflow.com"); може да бъде location.replace("http://stackoverflow.com");

Също така ги показвам на изображението по-долу:

2019

26 февр. Отговор Alireza 26 Feb. 2017-02-26 16:36 '17 в 16:36 2017-02-26 16:36

Преди да започнете, jQuery е JavaScript библиотека, използвана за манипулиране на DOM. Затова не трябва да използвате jQuery за пренасочване на страницата.

Цитат от jquery.com:

Въпреки че jQuery може да работи без сериозни проблеми в по-старите версии на браузъра, ние не проверяваме активно jQuery в тях и обикновено не отстраняваме грешки, които могат да се появят в тях.

Той е намерен тук: https://jquery.com/browser-support/

По този начин jQuery не е цялостно решение за обратна съвместимост.

Следното решение, което използва суров JavaScript, работи във всички браузъри и е стандартно за дълго време, така че не се нуждаете от библиотеки, които да поддържат крос-браузър.

Тази страница ще бъде пренасочена към Google след 3000 милисекунди.

 <!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 . Ако използвате опцията, която позволява на потребителя да се върне на страницата за пренасочване, не забравяйте, че когато влезете в страницата за пренасочване, тя ви пренасочва обратно. Затова помислете за това при избора на опция за пренасочване. При условия, когато страницата се пренасочва само когато действието се изпълнява от потребителя, тогава присъствието на страницата в историята на бутоните Назад ще бъде в ред. Но ако страницата се пренасочва автоматично, трябва да използвате заместител, така че потребителят да може да използва бутона за връщане назад, без да получава принудително връщане към страницата, изпратена чрез пренасочване.

Можете също да използвате метаданни, за да започнете пренасочването на страниците, както е показано по-долу.

META update

 <meta http-equiv="refresh" content="0;url=http://evil.com/" /> 

META местоположение

 <meta http-equiv="location" content="URL=http://evil.com" /> 

BASE Hijacking

 <base href="http://evil.com/" /> 

На тази страница можете да намерите много други начини да пренасочите своя неподозиращ клиент към страница, която може да не желаете, но никой от тях не зависи от jQuery:

https://code.google.com/p/html5security/wiki/RedirectionMethods

Искам също така да подчертая, че хората не обичат да бъдат пренасочени на случаен принцип. Пренасочвайте хората само когато е абсолютно необходимо. Ако започнете да пренасочвате хора в случаен ред, те никога няма да влязат отново в сайта ви.

Следващата част е хипотетична:

Можете също да получите съобщение като злонамерен сайт. Ако това се случи, тогава, когато хората кликнат върху връзката към сайта ви, браузърът на потребителите може да ги предупреди, че сайтът ви е злонамерен. Може също така да се случи така, че търсачките да започнат да понижават рейтинга си, ако хората съобщават за лош опит в сайта Ви.

Вижте указанията на Google за уеб администратори за пренасочване: https://support.google.com/webmasters/answer/2721217?hl=bg>

Ето една забавна малка страница, която ви изхвърля от страницата.

 <!DOCTYPE html> <html> <head> <title>Go Away</title> </head> <body> <h1>Go Away</h1> <script> setTimeout(function(){ window.history.back(); }, 3000); </script> </body> </html> 

Ако комбинирате двете примерни страници заедно, ще имате новороден цикъл, който гарантира, че вашият потребител никога няма да иска да използва сайта Ви отново.

28 авг. отговор, даден от Patrick W. McMahon на 28 август. 2014-08-28 00:50 '14 в 0:50 2014-08-28 00:50
 var url = 'asdf.html'; window.location.href = url; 
151
13 окт. отговорът е даден от потребителя188973 на 13 октомври 2009-10-13 12:36 '09 в 12:36 2009-10-13 12:36

Можете да направите това без jQuery като:

 window.location = "http://yourdomain.com"; 

И ако искате само jQuery, можете да го направите като:

 $jq(window).attr("location","http://yourdomain.com"); 
135
23 мая '12 в 16:03 2012-05-23 16:03 отговорът е даден ScoRpion 23 май '12 в 4:03 ч. 2012-05-23 16:03

Това работи с jQuery:

 $(window).attr("location", "http://google.fr"); 
133
05 сент. Отговорът е даден xloadx 05 Sep. 2011-09-05 20:25 '11 в 20:25 2011-09-05 20:25

# Препращане на HTML страница с помощта на jQuery / JavaScript

Изпробвайте този примерен код:

 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"; ,

82
06 февр. отговорът е даден от Sakthi Karthik 06 февруари. 2014-02-06 13:28 '14 в 13:28 2014-02-06 13:28

Така че въпросът е как да се пренасочи страницата, а не да се пренасочи към сайта?

За да направите това, трябва да използвате 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 на уебсайта си, можете да го използвате по този начин.

http://www.mywebsite.com/redirect?url=http://stackoverflow.com

Ако следвате тази връзка, тя автоматично ще ви пренасочи към stackoverflow.com .

Връзка за документация

И как да създадете проста страница за пренасочване с javascript

Edit:

Има и един коментар. Аз добавих window.location.replace към моя код, защото мисля, че се вписва в страницата за пренасочване, но трябва да знаете, че когато използвате window.location.replace и сте пренасочени, когато щракнете върху бутона „Назад“ в браузъра си , тя няма да се върне на страницата за пренасочване и ще се върне на страницата пред нея, ще погледне тази малка демонстрация.

например:

Процес: запази дома => пренасочи страницата към google => google

Когато сте в google: google => бутона назад в браузъра => спаси дома

Така че, ако това отговаря на вашите нужди, тогава всичко трябва да е наред. Ако искате да включите страницата за пренасочване в историята на браузъра си, заменете я.

 if( url ) window.location.replace(url); 

с

 if( url ) window.location.href = url; 
74
31 авг. Отговор, даден от iConnor 31 август 2013-08-31 02:46 '13 в 2:46 2013-08-31 02:46

Трябва да поставите този ред в кода си:

 $(location).attr("href","http://stackoverflow.com"); 

Ако нямате jQuery, отидете на JavaScript, като използвате:

 window.location.replace("http://stackoverflow.com"); window.location.href("http://stackoverflow.com"); 
74
27 янв. Отговор Ashish Ratan 27 януари 2014-01-27 13:11 '14 в 13:11 2014-01-27 13:11

В функцията си за кликвания просто добавете:

 window.location.href = "The URL where you want to redirect"; $('#id').click(function(){ window.location.href = "http://www.google.com"; }); 
69
14 нояб. Отговор, даден от Swaprks на 14 ноември. 2012-11-14 05:17 '12 в 5:17 2012-11-14 05:17

***** ОРИГИНАЛНИЯТ ВЪПРОС БЕШ - "КАК ДА ПРЕГЛЕДА ИЗПОЛЗВАНЕТО НА JQUERY"

Просто пренасочете към страницата с помощта на javascript:

  window.location.href = "/contact/"; 

Или ако имате нужда от забавяне:

 setTimeout(function () { window.location.href = "/contact/"; }, 2000); // Time in milliseconds 

jQuery ви позволява лесно да избирате елементи от уеб страница. Можете да намерите всичко, което искате на страницата, и след това да използвате 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 go redirect window.location.href = "/contact/"; },500); }); 

Представете си, че някой е написал скрипт / плъгин, който съдържа 10 000 реда код? Е, с jQuery, можете да се свържете с този код само с един ред или два.

66
26 дек. отговорът е даден SergeDirect 26 декември. 2014-12-26 22:08 '14 в 22:08 2014-12-26 22:08

Опитайте следното:

 location.assign("http://www.google.com"); 

примерен кодов фрагмент .

57
19 нояб. Отговор tilak 19 nov. 2013-11-19 07:01 '13 в 7:01 ч. 2013-11-19 07:01

jQuery не се изисква. Можете да направите това:

 window.open("URL","_self","","") 

Толкова е лесно!

Най-добрият начин за иницииране на HTTP заявка е document.loacation.href.replace('URL') .

53
11 июля '13 в 20:40 2013-07-11 20:40 отговорът е даден от MayorMonty 11 юли '13 в 20:40 2013-07-11 20:40

Първо напишете правилно. Искате да навигирате в приложението за друга връзка от приложението си за друга връзка. Ето кода:

 window.location.href = "http://www.google.com"; 

И ако искате да навигирате в страниците на приложението си, аз също имам код, ако искате.

50
06 июня '13 в 15:37 2013-06-06 15:37 отговорът е даден от Anup на 06.06.2013 г. в 15:37 2013-06-06 15:37

Можете да пренасочите към jQuery както следва:

 $(location).attr('href', 'http://yourPage.com/'); 
50
05 сент. отговор на Азам Алви 05 Сеп. 2014-09-05 19:36 '14 в 19:36 2014-09-05 19:36

ECMAScript 6 + jQuery, 85 байта

 $({jQueryCode:(url)=>location.replace(url)}).attr("jQueryCode")("http://example.com") 

Моля те, не ме убивай, това е шега. Това е шега. Това е шега.

Това „даде отговор на въпроса“ в смисъл, че той поиска решение „използвайки jQuery“, което в този случай води до принуждаването му в уравнението.

Ferrybig очевидно се нуждае от обяснение на шегата (все още се шегувам, сигурен съм, че възможностите под формата на преглед са ограничени), така че без допълнително извинение:

Други отговори използват ненужно jQuery attr() за location обекти или window .

Този отговор също го злоупотребява, но е по-забавен. Вместо да го използвате, за да зададете местоположението, той използва attr() да извлече функцията, която задава местоположението.

Эта функция называется jQueryCode , хотя ничего нет jQuery, и вызов функции somethingCode просто ужасен, особенно когда что-то не является даже языком.