Po prostu dołącz a, #a po nim identyfikator <a>tagu (lub innego tagu HTML, np. A <section>), do którego próbujesz się dostać. Na przykład, jeśli próbujesz utworzyć link do nagłówka w tym kodzie HTML:
<p>This is some content.</p>
<h2><a id="target">Some Header</a></h2>
<p>This is some more content.</p>
Co się stanie, jeśli ten identyfikator jest używany wielokrotnie? Natknąłem się na witrynę MS, która wielokrotnie używała znaku idof, id="in-closing">Some string</id>gdzie kilka razy Some stringstała się nowym ciągiem znaków.
kayleeFrye_onDeck
5
@kayleeFrye_onDeck Twój kod HTML jest nieprawidłowy, jeśli jest wiele id. Z definicji idma być unikalny dla tego tagu
Kolob Canyon
1
Dzięki za wyjaśnienie, @KolobCanyon! :)
kayleeFrye_onDeck
czy istnieje sposób, aby to zrobić z klasą, która jest używana tylko raz?
Chagai Friedlander
Może byłem po prostu naiwny, ale kiedy przypadkiem www.site.com/page/#targetto się nie udało. Upewnij się, że nie masz /na końcu adresu URL.
noah
29
Utwórz „link przeskoku” w następującym formacie:
http://www.somesite.com/somepage#anchor
Gdzie zakotwiczenie to identyfikator elementu, do którego ma prowadzić łącze na tej stronie. Użyj narzędzi programistycznych przeglądarki / wyświetl źródło, aby znaleźć identyfikator elementu, do którego chcesz utworzyć link.
Jeśli element nie ma identyfikatora i nie kontrolujesz tej witryny, nie możesz tego zrobić.
Co się stanie, jeśli z określoną częścią strony internetowej nie jest powiązany identyfikator?
ajaysinghnegi
Następnie musisz dodać identyfikator do elementu
osłony
1
Czy mogę dodać identyfikator do tagu na stronie internetowej w Internecie?
ajaysinghnegi
2
Nie, jeśli chcesz to zrobić w innej witrynie, możesz spróbować utworzyć niestandardową bookmarklet JS, aby przewijać do części, do której chcesz przewinąć. Nie możesz sprawić, by zakotwiczone linki działały, jeśli identyfikatory nie są skonfigurowane.
osłony
Czy możesz podać link do czegoś, co wskazałeś powyżej, aby to zrobić? Nie robiłem wcześniej niczego takiego.
ajaysinghnegi
10
Jest to możliwe tylko wtedy, gdy ta witryna zadeklarowała kotwice na stronie. Odbywa się to poprzez nadanie tagowi nazwy lub atrybutu identyfikatora , więc szukaj tych, które znajdują się blisko miejsca, do którego chcesz utworzyć link.
nameAtrybut jest obsługiwana tylko na <a>element tego, i to jest przestarzałe w HTML 5.
Quentin
Dla mnie skupia się zbyt nisko na elemencie. Czy ktoś miał to samo?
Kolob Canyon
8
W przypadku, gdy strona docelowa znajduje się w tej samej domenie (tj. Ma to samo źródło co Twoja strona) i nie masz nic przeciwko tworzeniu nowych zakładek (1), możesz (ab) użyć 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>
Drobnostki:
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()
}
Działającym przykładem takiego „exploita”, który możesz teraz wypróbować, może być:
Jeśli wpiszesz to w pasek adresu (pamiętaj, że Chrome usunie javascript:prefiks po wklejeniu ze schowka) lub ustawisz go jako hrefwartość dowolnego linku na tej stronie (za pomocą Narzędzi dla programistów) i klikniesz go, otrzymasz kolejną (zduplikowaną) stronę z pytaniem SO przewiniętą do stopka i stopka pomalowane na czerwono. (Dodano opóźnienie jako obejście dla treści ładowanej przez Ajax, która przesuwa stopkę w dół po załadowaniu).
Uwagi
Testowane w aktualnej wersji Chrome i Firefox, generalnie powinno działać, ponieważ opiera się na zdefiniowanym standardowym zachowaniu.
Nie można ich zilustrować w interaktywnym fragmencie kodu tutaj w SO, ponieważ są one odizolowane od pochodzenia strony.
(1) window.open(url,'_self')wydaje się przerywać loadwydarzenie; w zasadzie sprawia, że window.openzachowuje się jak normalna a href=""nawigacja po kliknięciu; nie zbadałem jeszcze więcej.
huh, nie przewinęło się na sam dół, a spód nie jest czerwony
John D,
1
… I przypuszczam, że nie otworzyło nowego okna. Najprawdopodobniej dlatego, że wykonywanie javascript:linków wpisywanych w pasku adresu URL nie działa już w większości przeglądarek z domyślnymi ustawieniami, takimi jak zapobieganie „self-XSS”. Ale możesz to wypróbować w konsoli Web Developers, gdzie powinno działać dobrze.
myf
czy ktoś mógłby to zmienić i ułatwić korzystanie z niego? Nie jestem ekspertem od javascript i nie mogłem wymyślić, co robić
Chagai Friedlander
3
Pierwszy cel odnosi się do identyfikatora BlockID znajdującego się w kodzie HTML lub narzędziach programistycznych Chromes, do których próbujesz utworzyć link. Każdy kod jest inny i będziesz musiał trochę poszukać, aby znaleźć identyfikator, do którego próbujesz się odwołać. Powinien wyglądać mniej więcej tak. div class="page-container drawer-page-content" id"PageContainer"Zwróć uwagę, że jest to format całej sekcji, do której się odwołuje, a nie pojedynczego tekstu lub obrazu. Aby to zrobić, musisz znaleźć ten sam fragment kodu, ale odnoszący się do bloku docelowego. Na przykład w dv id="your-block-id"każdym razie właśnie czytałem ten wątek i przyszedł mi do głowy pomysł, jeśli jesteś użytkownikiem Shopify i chcesz to zrobić, jest to prawie to samo, co powiedziałem. Ale zamiast
> http://url.to.site/index.html#target
Położyłbyś
> http://storedomain.com/target
Na przykład konfiguruję stronę z zastrzeżeniem z linkami prowadzącymi do subskrypcji biuletynu i bloków zakupów na mojej stronie głównej, więc wstawiam https://mystore-classifier.com/#shopify-section-1528945200235hiperłącze. Pamiętaj, że -klasyfikator służy do mojego użytku wewnętrznego i nie dotyczy Ciebie. To tylko po to, aby móc śledzić moje sklepy. Jeśli chcesz umieścić link do czegoś innego niż strona główna, umieść
> http://mystore-classifier.com/pagename/#BlockID
Mam nadzieję, że ktoś uznał to za przydatne, jeśli coś jest nie tak z moim wyjaśnieniem, daj mi znać, ponieważ nie jestem programistą HTML, mój język to C #!
Zasadniczo dodajesz #targetText=na końcu adresu URL, a przeglądarka przewinie do tekstu docelowego i podświetli go po załadowaniu strony.
Jest w wersji Chrome, która działa na moim biurku, ale obecnie musi być ręcznie włączona. Prawdopodobnie wkrótce zostanie domyślnie włączony w produkcyjnych wersjach Chrome, a inne przeglądarki będą podążać za nim, więc OK, aby rozpocząć dodawanie do swoich linków teraz, a wtedy zacznie działać.
Odpowiedzi:
Po prostu dołącz a,
#
a po nim identyfikator<a>
tagu (lub innego tagu HTML, np. A<section>
), do którego próbujesz się dostać. Na przykład, jeśli próbujesz utworzyć link do nagłówka w tym kodzie HTML:Możesz użyć linku
<a href="http://url.to.site/index.html#target">Link</a>
.źródło
id
of,id="in-closing">Some string</id>
gdzie kilka razySome string
stała się nowym ciągiem znaków.id
. Z definicjiid
ma być unikalny dla tego taguwww.site.com/page/#target
to się nie udało. Upewnij się, że nie masz/
na końcu adresu URL.Utwórz „link przeskoku” w następującym formacie:
Gdzie zakotwiczenie to identyfikator elementu, do którego ma prowadzić łącze na tej stronie. Użyj narzędzi programistycznych przeglądarki / wyświetl źródło, aby znaleźć identyfikator elementu, do którego chcesz utworzyć link.
Jeśli element nie ma identyfikatora i nie kontrolujesz tej witryny, nie możesz tego zrobić.
źródło
Jest to możliwe tylko wtedy, gdy ta witryna zadeklarowała kotwice na stronie. Odbywa się to poprzez nadanie tagowi nazwy lub atrybutu identyfikatora , więc szukaj tych, które znajdują się blisko miejsca, do którego chcesz utworzyć link.
A potem składnia byłaby
źródło
name
Atrybut jest obsługiwana tylko na<a>
element tego, i to jest przestarzałe w HTML 5.W przypadku, gdy strona docelowa znajduje się w tej samej domenie (tj. Ma to samo źródło co Twoja strona) i nie masz nic przeciwko tworzeniu nowych zakładek (1), możesz (ab) użyć 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>
Drobnostki:
Działającym przykładem takiego „exploita”, który możesz teraz wypróbować, może być:
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')
Jeśli wpiszesz to w pasek adresu (pamiętaj, że Chrome usunie
javascript:
prefiks po wklejeniu ze schowka) lub ustawisz go jakohref
wartość dowolnego linku na tej stronie (za pomocą Narzędzi dla programistów) i klikniesz go, otrzymasz kolejną (zduplikowaną) stronę z pytaniem SO przewiniętą do stopka i stopka pomalowane na czerwono. (Dodano opóźnienie jako obejście dla treści ładowanej przez Ajax, która przesuwa stopkę w dół po załadowaniu).Uwagi
window.open(url,'_self')
wydaje się przerywaćload
wydarzenie; w zasadzie sprawia, żewindow.open
zachowuje się jak normalnaa href=""
nawigacja po kliknięciu; nie zbadałem jeszcze więcej.źródło
javascript:
linków wpisywanych w pasku adresu URL nie działa już w większości przeglądarek z domyślnymi ustawieniami, takimi jak zapobieganie „self-XSS”. Ale możesz to wypróbować w konsoli Web Developers, gdzie powinno działać dobrze.Pierwszy cel odnosi się do identyfikatora BlockID znajdującego się w kodzie HTML lub narzędziach programistycznych Chromes, do których próbujesz utworzyć link. Każdy kod jest inny i będziesz musiał trochę poszukać, aby znaleźć identyfikator, do którego próbujesz się odwołać. Powinien wyglądać mniej więcej tak.
div class="page-container drawer-page-content" id"PageContainer"
Zwróć uwagę, że jest to format całej sekcji, do której się odwołuje, a nie pojedynczego tekstu lub obrazu. Aby to zrobić, musisz znaleźć ten sam fragment kodu, ale odnoszący się do bloku docelowego. Na przykład wdv id="your-block-id"
każdym razie właśnie czytałem ten wątek i przyszedł mi do głowy pomysł, jeśli jesteś użytkownikiem Shopify i chcesz to zrobić, jest to prawie to samo, co powiedziałem. Ale zamiastPołożyłbyś
Na przykład konfiguruję stronę z zastrzeżeniem z linkami prowadzącymi do subskrypcji biuletynu i bloków zakupów na mojej stronie głównej, więc wstawiam
https://mystore-classifier.com/#shopify-section-1528945200235
hiperłącze. Pamiętaj, że -klasyfikator służy do mojego użytku wewnętrznego i nie dotyczy Ciebie. To tylko po to, aby móc śledzić moje sklepy. Jeśli chcesz umieścić link do czegoś innego niż strona główna, umieśćMam nadzieję, że ktoś uznał to za przydatne, jeśli coś jest nie tak z moim wyjaśnieniem, daj mi znać, ponieważ nie jestem programistą HTML, mój język to C #!
źródło
Nadchodząca funkcja „Przewiń do tekstu” w Chrome jest dokładnie tym, czego szukasz ....
https://github.com/bokand/ScrollToTextFragment
Zasadniczo dodajesz
#targetText=
na końcu adresu URL, a przeglądarka przewinie do tekstu docelowego i podświetli go po załadowaniu strony.Jest w wersji Chrome, która działa na moim biurku, ale obecnie musi być ręcznie włączona. Prawdopodobnie wkrótce zostanie domyślnie włączony w produkcyjnych wersjach Chrome, a inne przeglądarki będą podążać za nim, więc OK, aby rozpocząć dodawanie do swoich linków teraz, a wtedy zacznie działać.
źródło