2013-03-18 25 views
23

Jak utworzyć link do części długiej strony w innej witrynie, nad którą nie sprawuję kontroli?Łączenie do określonej części strony internetowej

Pomyślałem, że możesz użyć wariantu #partofpage na końcu mojego linku. Jakieś sugestie?

+0

Możliwy duplikat [Jak utworzyć powiązanie z częścią strony? (hash?)] (http://stackoverflow.com/questions/2835140/how-do--link-to-part-of-a-page-hash) – Quentin

+0

Aby połączyć tę część odpowiedzi, użyj następującego linku, https : //stackoverflow.com/questions/15481911/linking-to-a-specific-part-of-a-web-page –

+0

Aby połączyć tę część strony, użyj następującego linku, https://stackoverflow.com/questions/15481911/Linking-to-a-specific-of-a-web-page –

Odpowiedz

26

Wystarczy dołączyć #, a następnie identyfikator znacznika <a> (lub innego znacznika HTML, np. <section>), do którego próbujesz się dostać. Na przykład, jeśli próbujesz połączyć się z nagłówka w tym HTML:

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

Można użyć linku <a href="http://url.to.site/index.html#target">Link</a>.

+1

Dzięki chłopaki, to zawsze proste rzeczy, o których zapomniałeś !!! – mjmuk

+6

@Quentin daj mi spokój, napisałem to 3 lata temu :) Niedługo zaktualizuję. – APerson

13

Utwórz odnośnik „skoku” za pomocą następującego formatu:

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

Gdzie jest kotwica id elementu, który chcesz połączyć się na tej stronie. Użyj narzędzi programistycznych przeglądarki/wyświetl źródło, aby znaleźć identyfikator elementu, który chcesz połączyć.

Jeśli element nie ma identyfikatora i nie kontrolujesz tej witryny, nie możesz tego zrobić.

+0

Dzięki chłopaki, to zawsze proste rzeczy, o których zapomniałeś !!! – mjmuk

2

Jest to możliwe tylko wtedy, gdy strona zadeklarowała zakotwiczenia na stronie. Odbywa się to poprzez nadanie plakietce numeru name or id attribute, dlatego należy wyszukać wszystkie znajdujące się w pobliżu miejsca, do którego ma prowadzić link.

A potem składnia byłoby

<a href="page.html#anchor">text</a> 
+0

Dzięki chłopaki, to zawsze proste rzeczy, o których zapomniałeś !!! – mjmuk

+0

Atrybut 'name' jest obsługiwany tylko dla elementu' 'i jest przestarzały w HTML 5. – Quentin

1

W przypadku, gdy strona docelowa jest w tej samej domenie (np Podziela samego pochodzenia z Twojej strony) i nie masz nic przeciwko tworzeniu nowych kartach (1), można (ab) używać niektórych 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>

Ciekawostki:

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() 
} 

przykład Praca z takimi „exploit” można spróbować teraz mogą 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)})})('https://stackoverflow.com/questions/45014240/link-to-a-specific-spot-on-a-page-i-cant-edit','footer')

Jeśli wprowadzisz to w pasku adresu (umysł, że Chrome usuwa javascript: prefiks gdy wklejony ze schowka) lub dokonać to wartość dowolnego linku na tej stronie (przy użyciu Narzędzi dla programistów) i kliknij go, otrzymasz kolejną (zduplikowaną) stronę z zapytaniem o SO przewiniętą do stopki i stopką pomalowaną na czerwono. (Delay dodany jako obejście ajax załadowana zawartość pchanie stopkę w dół po obciążeniu).

Uwagi

  • przetestowany w obecnym Chrome i Firefox, generalnie powinien działać, ponieważ opiera się na określonej normy zachowania.
  • Nie można tu zinterpretować w opisie interaktywnym w SO, ponieważ są one odizolowane od strony.
  • MDN: Window.open()
  • (1) window.open(url,'_self') wydaje się przełamać zdarzenie load; zasadniczo sprawia, że ​​window.open zachowuje się jak normalna nawigacja po kliknięciu; nie badałem jeszcze więcej.
1

Możesz użyć Citebite, aby połączyć się z określoną pozycją strony, nawet jeśli nie używa identyfikatora w tej pozycji.

Powiązane problemy