Menautkan ke bagian tertentu dari halaman web

93

Bagaimana cara membuat tautan ke bagian dari halaman web yang panjang di situs web lain yang tidak saya kontrol?

Saya pikir Anda dapat menggunakan varian dari #partofpage di akhir tautan saya. Ada saran?

mjmuk
sumber
1
Kemungkinan duplikat dari Bagaimana cara saya menautkan ke bagian halaman? (hash?)
Quentin
Untuk menautkan bagian jawaban ini gunakan tautan berikut, stackoverflow.com/questions/15481911/…
Ruturaj Bisure
Untuk menautkan bagian halaman ini gunakan tautan berikut, stackoverflow.com/questions/15481911/…
Ruturaj Bisure

Jawaban:

82

Cukup tambahkan #diikuti dengan ID <a>tag (atau tag HTML lain, seperti a <section>) yang Anda coba masuki. Misalnya, jika Anda mencoba menautkan ke tajuk di HTML ini:

<p>This is some content.</p>
<h2><a id="target">Some Header</a></h2>
<p>This is some more content.</p>

Anda bisa menggunakan tautannya <a href="http://url.to.site/index.html#target">Link</a>.

Seseorang
sumber
3
Bagaimana jika ID itu digunakan beberapa kali? Aku berlari ke sebuah situs MS yang menggunakan iddari id="in-closing">Some string</id>beberapa kali di mana Some stringmenjadi string baru beberapa kali.
kayleeFrye_onDeck
5
@kayleeFrye_onDeck HTML Anda tidak valid jika ada beberapa id. Menurut definisi iddimaksudkan untuk menjadi unik untuk tag itu
Kolob Canyon
1
Terima kasih telah mengklarifikasi, @KolobCanyon! :)
kayleeFrye_onDeck
apakah ada cara untuk melakukan ini dengan kelas yang hanya digunakan sekali?
Chagai Friedlander
Mungkin saya hanya naif tetapi ketika saya tidak sengaja melakukannya www.site.com/page/#targetgagal. Pastikan Anda tidak memiliki /di akhir url.
noah
30

Buat "tautan lompat" menggunakan format berikut:

http://www.somesite.com/somepage#anchor

Di mana jangkar adalah id dari elemen yang ingin Anda tautkan pada halaman itu. Gunakan alat pengembangan browser / lihat sumber untuk menemukan id elemen yang ingin Anda tautkan.

Jika elemen tidak memiliki id dan Anda tidak mengontrol situs itu maka Anda tidak dapat melakukannya.

kerudung
sumber
Bagaimana jika bagian tertentu dari halaman web tidak memiliki id yang terkait dengannya?
ajaysinghnegi
Kemudian Anda harus menambahkan id ke elemen
cowls
1
Bisakah saya menambahkan id ke tag pada halaman web di internet?
ajaysinghnegi
2
Tidak, jika Anda ingin melakukan ini ke situs web lain, Anda dapat mencoba membuat bookmarklet JS khusus untuk menggulir ke bagian yang ingin Anda gulir. Anda tidak dapat membuat tautan berlabuh berfungsi jika id tidak disiapkan.
penutup
Dapatkah Anda menautkan ke sesuatu yang Anda tentukan di atas untuk melakukan itu? Saya belum pernah melakukan hal semacam itu sebelumnya.
ajaysinghnegi
10

Itu hanya mungkin jika situs tersebut telah menyatakan jangkar di halaman. Ini dilakukan dengan memberi tag nama atau atribut id , jadi cari yang dekat dengan tempat Anda ingin menautkan.

Dan kemudian sintaksnya adalah

<a href="page.html#anchor">text</a>
fredrik
sumber
The nameatribut hanya didukung pada <a>elemen untuk ini, dan itu adalah usang dalam HTML 5.
Quentin
Ini berfokus terlalu rendah pada elemen bagi saya. Adakah yang pernah mengalami hal yang sama?
Kolob Canyon
8

Jika halaman target berada di domain yang sama (yaitu berbagi asal yang sama dengan halaman Anda) dan Anda tidak keberatan membuat tab baru (1), Anda dapat (ab) menggunakan beberapa JavaScript :

<a href="javascript:void(window.open('./target.html').onload=function(){this.document.querySelector('p:nth-child(10)').scrollIntoView()})">see tenth paragraph on another page</a>

Trivia:

var w = window.open('some URL of the same origin');
w.onload = function(){
  // do whatever you want with `this.document`, like
  this.document.querySelecotor('footer').scrollIntoView()
}

Contoh kerja dari 'eksploitasi' yang dapat Anda coba sekarang adalah:

javascript:(function(url,sel,w,el){w=window.open(url);w.addEventListener('load',function(){w.setTimeout(function(){el=w.document.querySelector(sel);el.scrollIntoView();el.style.backgroundColor='red'},1000)})})('/programming/45014240/link-to-a-specific-spot-on-a-page-i-cant-edit','footer')

Jika Anda memasukkan ini ke bilah lokasi (ingat bahwa Chrome menghapus javascript:awalan saat ditempel dari papan klip) atau menjadikannya hrefnilai tautan apa pun di laman ini (menggunakan Alat Pengembang) dan mengekliknya, Anda akan mendapatkan laman pertanyaan SO (duplikat) lainnya yang digulir ke footer dan footer dicat merah. (Penundaan ditambahkan sebagai solusi untuk konten yang dimuat ajax yang mendorong footer ke bawah setelah dimuat.)

Catatan

  • Diuji di Chrome dan Firefox saat ini, umumnya harus berfungsi karena didasarkan pada perilaku standar yang ditentukan.
  • Tidak dapat diilustrasikan dalam potongan interaktif di SO, karena mereka diisolasi dari halaman asal-bijaksana.
  • MDN: Window.open ()
  • (1) window.open(url,'_self')tampaknya merusak loadacara; pada dasarnya membuat window.openperilaku seperti a href=""navigasi klik biasa ; belum meneliti lebih lanjut.
myf
sumber
ya itu tidak bergulir ke bawah dan bawah tidak merah
John D
1
… Dan tidak ada yang membuka jendela baru, kurasa. Kemungkinan besar karena fakta bahwa eksekusi javascript:tautan yang diketik ke dalam URLbar tidak lagi berfungsi di sebagian besar browser dengan pengaturan default, sebagai pencegahan "self-XSS". Namun Anda dapat mencobanya di konsol Pengembang Web, yang semestinya berfungsi dengan baik.
myf
bisakah seseorang mengedit ini dan membuatnya lebih mudah digunakan? Saya bukan ahli javascript dan tidak tahu apa yang harus dilakukan
Chagai Friedlander
3

First off target mengacu pada BlockID yang ada di kode HTML atau alat pengembang chromes yang Anda coba tautkan. Setiap kode berbeda dan Anda perlu melakukan penggalian untuk menemukan ID yang Anda coba rujuk. Seharusnya terlihat seperti div class="page-container drawer-page-content" id"PageContainer"Perhatikan bahwa ini adalah format untuk seluruh bagian yang direferensikan, bukan teks atau gambar individual. Untuk melakukan itu, Anda perlu menemukan potongan kode yang sama tetapi berkaitan dengan blok target Anda. Misalnya, dv id="your-block-id"saya baru saja membaca utas ini dan sebuah ide muncul di benak saya, jika Anda adalah pengguna Shopify dan ingin melakukan ini, itu hampir sama dengan yang dinyatakan. Tapi bukannya

> http://url.to.site/index.html#target

Anda akan menempatkan

> http://storedomain.com/target

Misalnya, saya menyiapkan halaman pelepasan tanggung jawab hukum dengan tautan yang mengarah ke pendaftaran buletin dan blok belanja di halaman beranda saya, jadi saya memasukkan https://mystore-classifier.com/#shopify-section-1528945200235hyperlink saya. Harap perhatikan bahwa -classifier adalah untuk penggunaan internal saya dan tidak berlaku untuk Anda. Ini hanya agar saya dapat melacak toko saya. Jika Anda ingin menautkan ke sesuatu selain beranda, Anda akan meletakkannya

> http://mystore-classifier.com/pagename/#BlockID

Saya harap seseorang menemukan ini berguna, jika ada yang salah dengan penjelasan saya, beri tahu saya karena saya bukan programmer HTML, bahasa saya adalah C #!

Ryan Buchanan
sumber
3

Fitur Chrome "Gulir ke teks" yang akan datang persis seperti yang Anda cari ....

https://github.com/bokand/ScrollToTextFragment

Anda pada dasarnya menambahkan #targetText=di akhir URL dan browser akan menggulir ke teks target dan menyorotnya setelah halaman dimuat.

Ini ada dalam versi Chrome yang berjalan di meja saya, tetapi saat ini harus diaktifkan secara manual. Agaknya itu akan segera diaktifkan secara default dalam produksi Chrome build dan browser lain akan mengikuti, jadi OK untuk mulai menambahkan tautan Anda sekarang dan itu akan mulai berfungsi kemudian.

bigjosh
sumber