ลิงก์ไปยังโหลดหน้าปัจจุบันใหม่


175

เป็นไปได้ไหมที่จะมีลิงค์ปกติชี้ไปที่ตำแหน่งปัจจุบัน?

ขณะนี้ฉันพบโซลูชัน 2 วิธี แต่หนึ่งในนั้นมี JavaScript และอีกวิธีหนึ่งคุณต้องทราบเส้นทางที่แน่นอนไปยังหน้า:

<a href="#" onclick="window.location.reload(true);">1</a>
<a href="/foobar/">2</a>
<a href="#">3 (of course not working)</a>

มีวิธีการทำเช่นนี้โดยไม่ใช้ JavaScript หรือรู้เส้นทางที่แน่นอน?

คำตอบ:


198

ฉันได้ใช้:

<a href=".">link</a>

ยังไม่พบเคสและ / หรือเบราว์เซอร์ที่ไม่ทำงานตามที่ตั้งใจ

Period หมายถึงพา ธ ปัจจุบัน คุณยังสามารถใช้..เพื่ออ้างถึงโฟลเดอร์ด้านบนพา ธ ปัจจุบันตัวอย่างเช่นหากคุณมีโครงสร้างไฟล์นี้:

page1.html
folder1
    page2.html

จากนั้นคุณสามารถpage2.htmlเขียน:

<a href="../page1.html">link to page 1</a>

แก้ไข:

ฉันไม่แน่ใจว่าพฤติกรรมมีการเปลี่ยนแปลงหรือเป็นเช่นนี้ตลอดเวลาหรือไม่ แต่ Chrome (และอื่น ๆ ) จะใช้เวลาตามที่อธิบายไว้ข้างต้นเกี่ยวกับไดเรกทอรีไม่ใช่ไฟล์ ซึ่งหมายความว่าถ้าคุณอยู่ที่http://example.com/foo/bar.htmlคุณเป็นจริงในไดเรกทอรี/foo/และhrefมูลค่าของ.ในbar.htmlจะอ้างถึง/foo/มากกว่าbar.html

คิดว่าเป็นการสำรวจระบบไฟล์ในเทอร์มินัล คุณไม่มีทางcdเป็นไฟล์ :)

แก้ไข 2:

ดูเหมือนว่าพฤติกรรมการใช้งานhref="."นั้นไม่สามารถคาดเดาได้อีกต่อไปทั้ง Firefox และ Chrome อาจมีการเปลี่ยนแปลงวิธีจัดการกับสิ่งเหล่านี้ ฉันจะไม่พึ่งพาคำตอบดั้งเดิมทั้งหมด แต่ลองใช้ทั้งสตริงว่างและช่วงเวลาในเบราว์เซอร์ที่แตกต่างกันสำหรับการใช้งานเฉพาะของคุณและตรวจสอบให้แน่ใจว่าคุณได้รับพฤติกรรมที่ต้องการ


25
ควรสังเกตว่าข้อมูล GET ไม่ได้ถูกเก็บไว้ด้วยวิธีนี้ให้พิจารณาว่าเป็น "การโหลดซ้ำ" การใช้ค่า href ที่ว่างจะรักษาข้อมูล GET แต่ล้างค่าแฮช (เช่น #these) ใช้ # หรือ? เนื่องจากค่า href จะเพิ่ม "ขยะ" ใน URL ใหม่ ฉันพบว่าการใช้ช่วงเวลาเป็นวิธีที่สะอาดที่สุดในการโหลดซ้ำ
Markus Amalthea Magnuson

5
เทคนิคนี้ใช้ไม่ได้กับฉันใน mac chrome แม้ว่าจะใช้ "." มันจะทำงานเหมือนกับว่า ".. " และลิงก์ไปยังเพจระดับบน เช่น / admin / stuff กลายเป็น / admin มีคนอื่นเห็นพฤติกรรมนี้อีกหรือไม่
Zac

3
การแก้ปัญหานี้ผิด นอกจากนี้ใน Chrome จะไม่ทำงานและชี้ไปที่ไดเรกทอรีหลัก คุณควรใช้ href เปล่าตามที่ @MarkusAmaltheaMagnuson แนะนำ
coorasse

8
นี้ดูเหมือนว่าจะทำงานเฉพาะในกรณีที่ส่วนประกอบเส้นทางของปลาย URL /ด้วย
คอส

6
ณ วันนี้สิ่งนี้ไม่สามารถใช้ได้ใน Firefox หรือ Chrome เบราว์เซอร์ทั้งสองอ้างอิงถึงไดเรกทอรีหลัก (ไม่ใช่หน้าปัจจุบัน) โดยใช้ href = "."
jtubre

135

ไม่มีคำตอบอื่นใดที่จะ preseve ค่าการสืบค้นใด ๆ ลอง

<a href="javascript:window.location.href=window.location.href">

เป็นที่ยอมรับว่าเกี่ยวข้องกับจาวาสคริปต์ แต่ถ้าผู้ใช้ของคุณปิดการใช้งานสคริปต์นี่เป็นเรื่องง่าย


5
ไม่ได้ผลสำหรับฉัน (Google Chrome 32) ฉันชอบ <a href="javascript:location.reload();"> </a>
Gabriel

3
ฉันใช้ Google Chrome 36.0.1985 และ javascript: window.location.href = window.location.href ทำงานได้ location.reload () มีผลกระทบที่โชคร้ายจากการพร้อมท์ผู้ใช้หากพวกเขาต้องการรีเฟรชหน้าเว็บใน Firefox และอาจไม่ให้ผลลัพธ์ที่ต้องการ ดูstackoverflow.com/questions/2405117/…สำหรับการสนทนาเพิ่มเติม
Simon Molloy

1
ฉันกำลังใช้มุมกับการกำหนดเส้นทาง สิ่งนี้ไม่ได้ผลสำหรับฉัน อย่างไรก็ตามสิ่งนี้ใช้ได้ผล -> <a href="javascript:"> click me </a>
John Henckel

เกิดอะไรขึ้นถ้า js ถูกปิดใช้งาน

5
วิธีนี้ไม่ได้ป้องกันจุดยึด
thomas.winckell

77

วิธีหนึ่งในการใช้ javascript:

<a href="javascript:window.location.reload(true)">Reload</a>

4
รักษาข้อความสอบถามและแองเคอร์ ( ?query=string#anchor) ที่ดี!
analog-nico

ฉันสิ้นสุดการใช้คำตอบนี้เพราะตำแหน่งการเลื่อนยังคงอยู่ มีประโยชน์หากคุณใช้การรีโหลดเป็นปุ่มหลอก "เลิกทำ"
Igneosaur

วิธีแก้ปัญหานี้ใช้ได้กับปฏิกิริยาของลูกค้า
Andrius

คุณช่วยอธิบายรายละเอียดเกี่ยวกับวิธีการใช้ในรูปแบบ html ได้ไหม?
Joanna Mikalai

ฉันมีคำถามคือtrueพารามิเตอร์จริงๆสิ่งที่คุณควรจะไปกับปัญหานี้เมื่อใช้window.location.reloadวิธีการหรือไม่ นั่นจะทำให้รีเฟรชยากที่จะหลีกเลี่ยงการดึงจากแคชซึ่งอาจเป็นสิ่งที่คุณต้องการในบางสถานการณ์ แต่ฉันคิดว่าในสถานการณ์ส่วนใหญ่ที่คุณต้องการใช้ประโยชน์จากแคชไม่ใช่หรือไม่?
Stephen M Irving

31

คุณสามารถทำได้: <a href="">This page</a>

แต่ฉันไม่คิดว่ามันจะรักษาข้อมูล GET และ POST


3
น่าเสียดายที่มันไม่ทำงานใน IE จาก: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - หากระบุ HREF เป็นค่าว่าง (href = "" หรือ href =) การเรียกใช้ลิงก์อาจแสดง ไดเรกทอรีที่มีเอกสารปัจจุบันหรืออาจสร้างข้อผิดพลาดขึ้นอยู่กับองค์ประกอบอื่น ๆ ในเอกสารและสภาพแวดล้อมเซิร์ฟเวอร์
Bohdan Lyzanets

12
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>

12
ฉันไม่ได้ใช้ PHP
Tyilo

3
สังเกต -1, อาจไม่ใช่วิธีแก้ปัญหาในกรณีของคุณ (เพราะมันเป็นโซลูชัน php) แต่ฉันคิดว่ามันเป็นทางออกที่สะอาดที่สุดที่นี่ นี่เป็นเพราะมันให้ค่าที่ถูกต้องกับแอตทริบิวต์ href มันสะอาดที่สุด ถ้าเป็นไปได้หลีกเลี่ยงจาวาสคริปต์ ดังนั้น +1
rofavadeka

มีประโยชน์มาก ทำไมการทำนิ้วหัวแม่มือลง? คำถามเดิมไม่ได้พูดถึง js อย่างใดอย่างหนึ่งและส่วนใหญ่ของ q ของที่นี่อ้างอิง JS ...
Andrew

@Andrew คำถามเดิมถูกแท็กด้วย #html และ #hyperlink ในขณะที่ยอมรับว่า "การเชื่อมโยงปกติชี้ไปที่ที่ตั้งปัจจุบัน" เป็นคำอธิบายที่คลุมเครืออย่างไม่น่าเชื่อฉันค่อนข้างมั่นใจว่ามันสามารถตีความได้อย่างสมเหตุสมผลว่ากำลังมองหาวิธีแก้ปัญหาแบบฝั่งไคลเอ็นต์เท่านั้น จุดยึดที่ href ถูกเติมโดย PHP ไม่ใช่ "ลิงค์ปกติ" ไม่ว่าจะด้วยวิธีใดก็ตามเป็นโค้ด PHP
โรคประจำถิ่น

@endemic เพื่อแนะนำจาวาสคริปต์คือ "ปกติ" และ php ไม่ใช่ความคิดเห็นที่ไม่มีจุดหมาย จริง ๆ แล้ว OP กำหนดปกติโดยไม่รวมถึงจาวาสคริปต์และไม่ได้ใช้พา ธ สัมบูรณ์ น่าสนใจพอคำตอบส่วนใหญ่อยู่ในจาวาสคริปต์
Andrew

10

ใช้สิ่งนี้เพื่อโหลดซ้ำ / รีเฟรชหน้าปัจจุบัน

<a href="#" onclick="window.location.reload(true);">

หรือใช้

<a href="">refresh</a>


7

<a href="https://stackoverflow.com/">Clicking me refreshes the page</a>

<a href="?">Click Me To Reload the page</a>


3
ใช้งานได้เฉพาะเมื่อคุณอยู่ใน index.html หรือ root doc / url อื่น ๆ
Stephen

@ สตีเฟ่นแน่นอน คุณพูดถูก เห็นได้ชัดว่าฉันแข็งแรงกว่าที่ฉันคิด ฉันเพิ่งทดสอบมันเร็วจริง ๆ และเกิดขึ้นบนราก
Thomas Shields

ทำงานได้ดีมากเมื่อ URL เป็นเช่น / blablabla ในขณะที่ จะพาฉันกลับไปที่ราก
Augustin Riedinger

6

ไม่มีวิธีทั่วโลกในการทำเช่นนี้น่าเสียดายที่มีเพียง HTML คุณสามารถลองทำได้<a href="">test</a>แต่ใช้งานได้ในบางเบราว์เซอร์เท่านั้น


มันไม่ทำงานใน IE จาก: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - หากระบุ HREF เป็นค่าว่าง (href = "" หรือ href =) การเรียกใช้ลิงก์อาจแสดง ไดเรกทอรีที่มีเอกสารปัจจุบันหรืออาจสร้างข้อผิดพลาดขึ้นอยู่กับองค์ประกอบอื่น ๆ ในเอกสารและสภาพแวดล้อมเซิร์ฟเวอร์
Bohdan Lyzanets

1
ฉันทดสอบและใช้งานได้ในเบราว์เซอร์สมัยใหม่ที่สำคัญทั้งหมด (Chrome, Firefox, Edge, Opera, Safari)
Donald Duck

5

URL idempotent โดยสมบูรณ์ที่เก็บรักษาพา ธ พารามิเตอร์และจุดยึด

 <a href="javascript:"> click me </a>

ใช้เพียงเล็กน้อยของ JS

แก้ไข:นี่ไม่ได้โหลดหน้าซ้ำ มันเป็นลิงค์ที่ไม่ทำอะไรเลย


@ FranciscoCorralesMorales ขออภัย แต่ฉันคิดว่าฉันเข้าใจผิดคำถาม ฉันคิดว่า OP กำลังพยายามสร้างลิงก์ที่ไม่ทำอะไรเลย แต่ตอนนี้ฉันเห็นว่า OP ต้องการลิงค์ที่จะโหลดหน้าปัจจุบัน (ฉันจะแก้ไข)
John Henckel

ขอบคุณสำหรับข้อมูลโค้ดนี้ซึ่งอาจให้ความช่วยเหลือได้ทันที คำอธิบายที่เหมาะสมจะช่วยเพิ่มมูลค่าทางการศึกษาอย่างมากโดยแสดงให้เห็นว่าทำไมนี่จึงเป็นทางออกที่ดีสำหรับปัญหาและจะทำให้มีประโยชน์มากขึ้นสำหรับผู้อ่านในอนาคตที่มีคำถามคล้ายกัน แต่ไม่เหมือนกัน โปรดแก้ไขคำตอบของคุณเพื่อเพิ่มคำอธิบายและระบุข้อ จำกัด และสมมติฐานที่ใช้
Toby Speight

3

ลองสิ่งนี้

<a href="javascript:window.location.href=window.location.href">

และคุณวาง # ไว้ที่ไหน
FlowUI SimpleUITesting.com

@ iOSCalendarpatchthecode.com ทำไมคุณต้องการใส่ # ?? นี่เป็นหน้าโหลดซ้ำ
รัก Kumar

ไม่สนใจความคิดเห็นของฉัน ฉันทำผิดพลาด
FlowUI SimpleUITesting.com

2

ในขณะที่คำตอบที่ยอมรับไม่ได้ผลสำหรับฉันใน IE9 สิ่งนี้ทำ:

<a href="?">link</a>

1
ฉันไม่คิดว่าวิธีนี้จะใช้งานได้หากคุณสนใจที่จะรักษาพารามิเตอร์การสืบค้น
WynandB

1
@WandandB ถูกต้อง สิ่งนี้จะทำให้พารามิเตอร์ GET และ POST เสียทั้งหมด ถ้านั่นคือสิ่งที่คุณต้องการหรือถ้าคุณไม่สนใจเคล็ดลับนี้ใช้งานได้ดี
hanshenrik

2

ทางออกหนึ่งเพิ่มเติม

<a href="javascript:history.go(0)">Reload</a>

ทางออกที่ดี! เคล็ดลับเล็ก ๆ สำหรับวิธีนั้นคือ 0 คือพารามิเตอร์เริ่มต้นดังนั้นหากคุณพยายามโหลดซ้ำคุณสามารถเขียนได้history.go()โดยไม่มีอาร์กิวเมนต์
Stephen M Irving

2
<a href="">Refresh!</a>

เว้นhref=""ว่างไว้และจะรีเฟรชหน้า
ใช้งานได้หากข้อมูลบางอย่างถูกส่งผ่านโดยใช้แบบฟอร์ม


0

ฉันใช้ JS เพื่อแสดงเฉพาะ div ที่มี id เฉพาะในหน้าแท็กในไซต์ jekyll ด้วยชุดลิงก์ในหน้าเดียวกันคุณจะแสดงองค์ประกอบที่เกี่ยวข้อง:

function hide_others() {
    $('div.item').hide();
    selected = location.hash.slice(1);
    if (selected) {
        $('#' + selected).show();
    }
    else {
    $('div.item').show();
    }
}

ลิงก์ใช้ลิงก์เช่น:

<a href="javascript:window.location.href='/tags.html#{{ tag[0] }}-ref'; hide_others()">{{ tag[0] }}</a>

0

คุณสามารถใช้แบบฟอร์มเพื่อทำการ POST กับ URL เดียวกัน

 <form  method="POST" name="refresh" id="refresh">
 <input type="submit" value="Refresh" />
 </form>

นี่เป็นปุ่มที่จะรีเฟรชหน้าปัจจุบัน มันค่อนข้างน่ารำคาญเพราะถ้าผู้ใช้กดปุ่มรีเฟรชเบราว์เซอร์พวกเขาจะได้รับdo you want to resubmit the formข้อความ


0

ฉันใช้ HTML เพื่อแก้ไขปัญหาการ
ใช้งาน:

<a href="page1.html"> Link </a>

* page1.html -> พิมพ์ชื่อไฟล์ที่คุณกำลังทำงาน (ไฟล์ HTML ปัจจุบันของคุณ)


โปรดแก้ไขโพสต์ ยังไม่ชัดเจนว่าคุณใช้ภาษาการเขียนโปรแกรมอะไรคุณลองใช้รหัสอย่างไร
Roee Anuar

ฉันใช้HTMLเพื่อทำงานนี้
Ayush Kumar

-1
<a href="/">Same domain, just like refresh</a>

ดูเหมือนว่าจะทำงานเฉพาะในกรณีที่เว็บไซต์ของคุณเป็น index.html, index.htm หรือ index.php (หน้าเริ่มต้นใด ๆ )

แต่ดูเหมือนว่า.เป็นสิ่งเดียวกันและเป็นที่ยอมรับมากขึ้น

<a href=".">Same domain, just like refresh, (more used)</a>

ทั้งสองทำงานได้สมบูรณ์แบบบน Chrome เมื่อโดเมนเป็นทั้งhttp://และhttps://


-2

<a href="https://stackoverflow.com/home" target="_self">Reload the page</a>


ปัญหาคือถ้าเราไม่รู้ url ... target = "_ self" สามารถเป็น ommited
Hafenkranich

-3

หากคุณใช้แม่แบบ php / smarty คุณสามารถทำสิ่งนี้:

<a href="{{$smarty.server.REQUEST_URI}}{if $smarty.server.REQUEST_URI|strstr:"?"}&{else}?{/if}newItem=1">Add New Item</a>

-4

เพียงเพิ่ม target = "_ blank" และลิงก์จะเปิดหน้าใหม่โดยคงหน้าเดิมไว้


อย่างที่คุณพูดมันจะเปิดสิ่งที่ระบุในhrefแอตทริบิวต์ในหน้าต่าง / แท็บใหม่ สิ่งนี้ไม่ได้ตอบคำถามจริง
Philip Stratford
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.