URLi yenidən yükləmədən URL dəyişdirmək üçün necə?

Sayfayı təkrar yükləmədən cari səhifənin URL'sini dəyişdirə bilərəmmi?

Mümkünsə, prehash hissəsinə daxil olmasını istərdim.

Domendən sonra hissəni dəyişdirməyim lazımdır, buna görə də mən sahələrarası siyasəti pozan kimi deyiləm.

  window.location.href = "www.mysite.com/page2.php"; // sadly this reloads 
1913
05 мая '09 в 13:54 2009-05-05 13:54 Robinicks 05.05 'da 13:54' də təyin olunur 2009-05-05 13:54
@ 20 cavab

İndi bu Chrome, Safari, FF4 + və IE10pp4 + brauzerlərdə edilə bilər!

Daha çox məlumat üçün bu suala baxın: Adres çubuğunu hash olmadan və ya səhifəni yenidən yükləmədən yeni bir URL ilə yeniləyin

Məsələn:

  function processAjaxData(response, urlPath){ document.getElementById("content").innerHTML = response.html; document.title = response.pageTitle; window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", urlPath); } 

Sonra window.onpopstate geri / irəli naviqasiya aşkar etmək üçün window.onpopstate istifadə edə bilərsiniz:

 window.onpopstate = function(e){ if(e.state){ document.getElementById("content").innerHTML = e.state.html; document.title = e.state.pageTitle; } }; 

Brauzer tarixinin daha ətraflı öyrənilməsi üçün bu MDN məqaləsinə baxın .

1702
28 июля '10 в 18:30 2010-07-28 18:30 Cavab David Murdoch tərəfindən 28 iyul, 10-da saat 18.30- da verilir

HTML5, history.pushState()history.replaceState() təqdim etdi.

 window.history.pushState('page2', 'Title', '/page2.php'); 
border=0

Bu barədə daha ətraflı oxuyun .

426
17 авг. cavab Vivart 17 avqustda verilir . 2010-08-17 16:59 '10 at 16:59 2010-08-17 16:59

URL'yi dəyişdirmək istəyirsinizsə, brauzer tarixinə bir giriş əlavə etmək istəməsəniz, HTML5 replaceState də istifadə edə bilərsiniz:

 if (window.history.replaceState) { //prevents browser from storing history with each change: window.history.replaceState(statedata, title, url); } 

Bu, geri düyməsinin funksionallığını "pozacaq". Bəzi hallarda, məsələn, bir şəkil galerisində (arxa düyməsinin göründüyünüz hər bir şəkil üzərində hərəkət etmək əvəzinə arxa düyməsinə geri qayıtmaq istədikdə), hər bir görüntüsünü öz unikal URL ilə təmin etmək üçün bu, lazım ola bilər.

98
19 нояб. George Filippakos tərəfindən verilmiş cavab 19 noyabr 2012-11-19 13:32 '12 at 13:32 2012-11-19 13:32

Qeyd. Bir HTML5 brauzeri ilə işləyərkən bu cavabı görməməlisiniz. İndi digər cavablardan da göründüyü kimi mümkündür.

Sayfayı yeniden yüklemeden brauzerin URL dəyişdirə bilmir. URL yüklənmiş son səhifədir. Əgər onu dəyişdirirsinizsə ( document.location ), bu səhifə yenidən yüklənəcəkdir.

Aşkar səbəblərdən biri www.mysite.com saytında bir banka giriş səhifəsinə bənzər bir veb sayt yazmaqdır. Sonra www.mybank.com brauzer xəttini dəyişirsiniz. İstifadəçi həqiqətən www.mysite.com saytında baxdığından xəbərsiz olacaq.

98
05 мая '09 в 13:57 2009-05-05 13:57 Cavab Robin Günü 05 May '09 saat 13:57 'də verildi. 2009-05-05 13:57
 parent.location.hash = "hello"; 
76
14 мая '09 в 1:14 2009-05-14 01:14 Cavab 14 may 09-da Stiv tərəfindən 1:14 2009-05-14 01:14 tarixində verilir

İşdə mənim həllim: (newUrl, mövcud olanı əvəz etmək istədiyiniz yeni URL-dir)

 history.pushState({}, null, newUrl); 
56
10 июня '15 в 21:25 2015-06-10 21:25 Cavab Haimei tərəfindən 10 iyun 'da 21:25' də verilir 2015-06-10 21:25

HTML5 əvəziState Vivart və geo1701 tərəfindən əvvəlcədən qeyd edilən cavabdır. Lakin, bütün brauzerlərdə / versiyalarında dəstəklənmir. History.js HTML5 status funksiyalarını tamamlayır və HTML4 brauzerləri üçün əlavə dəstək verir.

25
21 нояб. Tomas Stjernegaard tərəfindən verilmiş cavab Jeppesen Nov 21 2012-11-21 14:09 '12 at 2:09 pm 2012-11-21 14:09

HTML5-dən əvvəl istifadə edə bilərsiniz:

 parent.location.hash = "hello"; 

 window.location.replace("http:www.example.com"); 

Bu metod sayfanızı yenidən history.pushState(page, caption, replace_url) , ancaq HTML5, history.pushState(page, caption, replace_url) , bu da səhifənizi yenidən yükləməməlidir.

21
24 янв. Cavab verilir Shine 24 jan. 2014-01-24 11:49 '14 da 11:49 2014-01-24 11:49

Əgər siz istifadəçilərə səhifələrə yer ayırmağa və paylaşmağa icazə verməyə çalışırsınızsa və siz dəqiq URL-yə ehtiyacınız yoxdur və başqa bir şey üçün hash bağlamalarından istifadə etmirsinizsə, onu iki hissəyə bölmək olar; Yuxarıda müzakirə edilən xaş mövqeyindən istifadə edərək, hash ilə əlaqəli URL'yi tapmaq və sonrakı nəticələrə yönləndirmək üçün ana səhifədəki çekləri tətbiq edin.

Məsələn:

1) İstifadəçi www.site.com/section/page/4 saytında

2) İstifadəçi URL'yi www.site.com/#/section/page/6 (hash ilə) ilə dəyişən bir hərəkət həyata keçirir. 6 səhifə üçün doğru məzmunu səhifəyə yüklədiyinizi varsayalım, beləliklə, hashdən başqa, istifadəçi çox narahat deyildir.

3) İstifadəçi bu URL-nini başqasına və ya əlfəcirlərə ötürür

4) Başqa və ya eyni istifadəçi daha sonra www.site.com/#/section/page/6 ünvanına gedəcək

5) www.site.com/ da istifadə olunan kodu istifadəçiyi www.site.com/ ünvanına yönəldir:

 if (window.location.hash.length > 0){ window.location = window.location.hash.substring(1); } 

Ümid edirəm bu mənada! Bu, bəzi hallar üçün faydalı bir yanaşma.

18
19 апр. Cavab 19 aprel tarixində Jeremy Warne tərəfindən verilmişdir. 2011-04-19 14:43 '11 'da 14:43' da 2011-04-19 14:43

Müasir brauzerlərdə və HTML5 history Windows bir pushState metodu var. Bu URL dəyişdirəcək və səhifəni yükləmədən tarixə əlavə edəcək.

Bunu aşağıdakı kimi istifadə edə bilərsiniz: 3) 1) obyektin vəziyyəti 2) adı və URL):

 window.history.pushState({page: "another"}, "another page", "example.html"); 

Bu URL dəyişdirəcək, lakin səhifəni yenidən yükləməyəcək və səhifənin mövcud olub-olmadığını yoxlayacaq, belə ki URL-ə cavab verən bəzi JavaScript kodu yaratsanız, aşağıdakılarla işləyə bilərsiniz.

Tarixi mövcuddur, istisna olmaqla tarixini dəyişdirən history.replaceState() da var, başqa bir şey yaratmaq yerinə cari tarixi dəyişdirəcəkdir!

Bundan başqa, history.pushState'in varlığını yoxlamaq üçün bir funksiya yarada və sonra qalan kimi bu şəkildə davam edə bilərsiniz:

 function goTo(page, title, url) { if ("undefined" !== typeof history.pushState) { history.pushState({page: page}, title, url); } else { window.location.assign(url); } } goTo("another page", "example", 'example.html'); 

Bundan əlavə, həssas SPA hashtag üçün istifadə olunan səhifəni yenidən yükləməyəcək <HTML5 browsers üçün # dəyişə bilərsiniz ...

Bunu dəyişərək # olduqca sadədir:

 window.location.hash = "example"; 

və belə bir şəkildə kəşf edə bilərsiniz:

 window.onhashchange = function () { console.log("#changed", window.location.hash); } 
15
02 июля '17 в 11:03 2017-07-02 11:03 Cavab Alireza tərəfindən verilir. 02 iyul 'da 11:03' də 2017-07-02 11:03

window.location URL fragmentini dəyişdirməyincə, loction (hər hansı bir window.location və ya document.location ) hər hansı bir dəyişiklik bu yeni URL- window.location bilər. URL dəyişdirirsinizsə, URL dəyişdirirsiniz.

Siz istifadə etdiyiniz URL-lər kimi deyilsinizsə, Apache mod_rewrite kimi server-side URL yenidən yazma üsullarını istifadə edin.

12
05 мая '09 в 13:58 2009-05-05 13:58 cavab 05.05.2009 tarixində saat 13:58 'da Gumbo tərəfindən verilmişdir 2009-05-05 13:58

Çapa etiketlər əlavə edə bilərsiniz. Bunu Google Analytics'i istifadə edərək, insanların səhifəyə daxil olmasını izləmək üçün http://www.piano-chords.net/ saytımdan istifadə edirəm. Yalnız bir çapa etiketi əlavə etdim və sonra izləmək istədiyim səhifənin bir hissəsi.

 var trackCode = "/#" + urlencode($("myDiv").text()); window.location.href = "http://www.piano-chords.net" + trackCode; pageTracker._trackPageview(trackCode); 
11
14 дек. Cavab Nate tərəfindən 14 dekabrda verilir . 2009-12-14 01:57 '09 da 1:57 2009-12-14 01:57

Aşağıda səhifəni yenidən yükləmədən URL dəyişdirmənin funksiyasıdır. Yalnız HTML5-i dəstəkləyir

  function ChangeUrl(page, url) { if (typeof (history.pushState) != "undefined") { var obj = {Page: page, Url: url}; history.pushState(obj, obj.Page, obj.Url); } else { window.location.href = "homePage"; // alert("Browser does not support HTML5."); } } ChangeUrl('Page1', 'homePage'); 
10
27 окт. cavab Suraj 27 oktyabr verildi . 2015-10-27 11:33 '15 at 11:33 2015-10-27 11:33

Tomas Stjernegaard Jeppesen tərəfindən qeyd edildiyi kimi, istifadəçi Links və Ajax tətbiqlərindən keçərkən URL parametrlərini dəyişdirmək üçün History.js istifadə edə bilərsiniz,

Demək olar ki, bir il keçdi və History.js böyümüşdü və daha sabit və çapraz brauzer oldu. İndi HTML5-də uyğun tarixi dövlətləri idarə etmək üçün istifadə edilə bilər, eləcə də HTML4-i dəstəkləyən bir çox brauzerlərdə. Bu demoda, bunun necə işlədiyinin bir nümunəsini görə bilərsiniz (həmçinin funksionallıq və məhdudiyyətlərinizi sınamaq imkanı.

Bu kitabxanadan istifadə etmək və həyata keçirməkdə kömək lazımdırsa, mən demo səhifənin mənbə koduyla tanış olmanı təklif edirəm: bunu etmək çox asan olduğunu görəcəksiniz.

Nəhayət, hashes (və hashbanks) istifadə edərək problemin nə ilə bağlı olduğunu ətraflı izah etmək üçün, Benjamin Luptondan bu linkə baxın.

7
05 сент. Erenor Paz tərəfindən verilmiş cavab sentyabr 05 2013-09-05 16:55 '13 saat 16:55 'da 2013-09-05 16:55

İndi ən çox "müasir" brauzerlərdə bunu edə bilərsiniz!

1) İşdə orijinal məqalə: -

HTML5: Brauzer URL'sini səhifə yenilənmədən dəyişdirin.

MDN sənədlərinə baxın.

Bunu edə bilərsiniz:

 window.history.pushState("object or string", "Title", "/new-url"); 
6
03 дек. cavab Gaurang P 03 dek. tərəfindən verilir . 2017-12-03 01:11 '17 'də 1:11' də 2017-12-03 01:11 'də

Yəqin ki, hashes istifadə etmədən, asual jQuery ünvanı plugin-ə baxın :

Bir nümunə burada .

Xahiş edirəm ki, bu, IE-də həsədlərdən istifadə edəcəkdir, bunun üçün heç bir həll yolu yoxdur.

4
18 февр. Satoshi tərəfindən verilən cavab 18 fevral 2012-02-18 12:37 '12 at 12:37 2012-02-18 12:37

HTML 5 tarix history.pushState() istifadə edin

Daha ətraflı məlumat üçün HTML5 tarixi API

3
15 авг. Cavab Prathamesh Rasam 15 aug verilir. 2015-08-15 14:55 '15 at 2:55 pm 2015-08-15 14:55
  let stateObject = { foo: "bar" }; history.pushState(stateObject, "page 2", "newpage.html"); 

Burada görə bilərsiniz ki , səhifəni yenidən yükləmədən brauzerinizin URL'sini yeniləyin

-1
15 окт. Cavab 15 oktyabrda Sheetal Kumar Maurya tərəfindən verilir . 2018-10-15 22:24 '18 saat 10: 24-də 2018-10-15 22:24

window.history.pushState("object or string", "Title", "/new-url") , lakin hələ də serverə yeni bir sorğu göndərir

-5
13 июля '17 в 7:04 2017-07-13 07:04 Cavab Huy Truong tərəfindən 13 İyul '17 'də 7:04 2017-07-13 07:04' də verilir

Zərərli bir şey etməyə çalışmadığınızı fərz etsəniz, öz URL- lərinizlə əlaqəsi olan hər şey htaccess sehrinə səbəb ola bilər.

-8
05 мая '09 в 15:23 2009-05-05 15:23 Altı ayaq nəzəriyyəsi ilə 05.05.2009 tarixində verilmiş cavab 15:23 saat 2009-05-05 15:23

tags ilə bağlı digər suallar və ya bir sual