Просто добавьте, за #которым следует идентификатор <a>тега (или другого HTML-тега, например, a <section>), к которому вы пытаетесь добраться. Например, если вы пытаетесь создать ссылку на заголовок в этом HTML:
<p>This is some content.</p>
<h2><a id="target">Some Header</a></h2>
<p>This is some more content.</p>
Вы можете воспользоваться ссылкой <a href="http://url.to.site/index.html#target">Link</a>.
Что, если этот идентификатор используется несколько раз? Я столкнулся с сайтом MS, который использовал the idof id="in-closing">Some string</id>несколько раз, где Some stringпару раз становился новой строкой.
kayleeFrye_onDeck
5
@kayleeFrye_onDeck Ваш HTML-код недействителен, если их несколько id. По определению idдолжен быть уникальным для этого тега
Каньон Колоб
1
Спасибо за разъяснения, @KolobCanyon! :)
kayleeFrye_onDeck
есть ли способ сделать это с классом, который используется только один раз?
Chagai Friedlander
Возможно, я был просто наивен, но когда я сделал www.site.com/page/#targetэто случайно, это не удалось. Убедитесь, что /в конце URL-адреса нет символа.
Ной
29
Создайте «ссылку перехода», используя следующий формат:
http://www.somesite.com/somepage#anchor
Где якорь - это идентификатор элемента, на который вы хотите создать ссылку на этой странице. Используйте инструменты разработки браузера / просмотрите исходный код, чтобы найти идентификатор элемента, на который вы хотите создать ссылку.
Если у элемента нет идентификатора, и вы не контролируете этот сайт, вы не можете этого сделать.
Что делать, если конкретная часть веб-страницы не имеет связанного с ней идентификатора?
ajaysinghnegi
Затем вам нужно добавить идентификатор к элементу
cowls
1
Могу ли я добавить идентификатор к тегу на веб-странице в Интернете?
ajaysinghnegi
2
Нет, если вы хотите сделать это на другом веб-сайте, вы можете попробовать создать собственный букмарклет JS для прокрутки до той части, которую вы хотите прокрутить. Вы не можете заставить работать привязанные ссылки, если идентификаторы не настроены.
cowls
Можете ли вы сделать ссылку на то, что вы указали выше? Я раньше ничего подобного не делал.
ajaysinghnegi
10
Это возможно только в том случае, если этот сайт объявил якоря на странице. Это делается путем присвоения тегу имени или атрибута id. , поэтому ищите любой из них, близкий к тому, на что вы хотите ссылку.
nameАтрибут поддерживается только на <a>элементе для этого, и это является устаревшим в HTML 5.
Квентин
Для меня это слишком низкое внимание к элементу. С кем-нибудь случалось то же самое?
Каньон Колоб
8
Если целевая страница находится в том же домене (т.е. имеет то же происхождение, что и ваша страница), и вы не возражаете против создания новых вкладок (1), вы можете (ab) использовать некоторый 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>
Интересный факт:
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()
}
Рабочий пример такого «эксплойта», который вы можете попробовать прямо сейчас, может быть:
Если вы введете это в адресную строку (помните, что Chrome удаляет javascript:префикс при вставке из буфера обмена) или сделайте егоhref значением любой ссылки на этой странице (с помощью инструментов разработчика) и щелкните по нему, вы получите еще одну (дублированную) страницу вопроса SO с прокруткой до нижний и нижний колонтитулы окрашены в красный цвет. (Задержка добавлена в качестве обходного пути для содержимого, загруженного с помощью ajax, смещающего нижний колонтитул после загрузки.)
Примечания
Протестировано в текущих версиях Chrome и Firefox, обычно должно работать, поскольку оно основано на определенном стандартном поведении.
Не могут быть проиллюстрированы в интерактивном фрагменте здесь, в SO, потому что они изолированы от источника страницы.
(1) window.open(url,'_self')кажется, нарушает loadсобытие; в основном заставляет window.openвести себя как обычная a href=""навигация по щелчку; еще не исследовал.
… И, полагаю, это не открыло новое окно. Скорее всего, потому, что выполнение javascript:ссылок, введенных в адресную строку, больше не работает в большинстве браузеров с настройками по умолчанию, как предотвращение самонастройки XSS. Но вы можете попробовать его в консоли веб-разработчиков, где он должен хорошо работать.
myf
может кто-нибудь отредактировать это и упростить использование? Я не эксперт по javascript и не мог понять, что делать
Чагай Фридлендер
3
В первую очередь цель относится к BlockID, найденному в инструментах разработчика HTML-кода или хрома, на которые вы пытаетесь установить ссылку. Каждый код отличается, и вам нужно будет немного покопаться, чтобы найти идентификатор, на который вы пытаетесь сослаться. Он должен выглядеть примерно так. div class="page-container drawer-page-content" id"PageContainer"Обратите внимание, что это формат для всего указанного раздела, а не для отдельного текста или изображения. Для этого вам нужно будет найти тот же фрагмент кода, но относящийся к вашему целевому блоку. Например, в dv id="your-block-id"любом случае, я просто читал эту ветку, и мне пришла в голову идея, если вы являетесь пользователем Shopify и хотите это сделать, это почти то же самое, что указано. Но вместо
> http://url.to.site/index.html#target
Вы бы положили
> http://storedomain.com/target
Например, я настраиваю страницу отказа от ответственности со ссылками, ведущими на подписку на информационный бюллетень и блоки покупок на моей домашней странице, поэтому я вставляю https://mystore-classifier.com/#shopify-section-1528945200235свою гиперссылку. Обратите внимание, что -classifier предназначен для моего внутреннего использования и не относится к вам. Это просто для того, чтобы я мог отслеживать свои магазины. Если вы хотите разместить ссылку не на свою домашнюю страницу, вы должны указать
> http://mystore-classifier.com/pagename/#BlockID
Надеюсь, кто-то нашел это полезным, если что-то не так с моим объяснением, дайте мне знать, так как я не программист HTML, мой язык - C #!
Вы в основном добавляете #targetText=в конец URL-адреса, и браузер прокручивает целевой текст и выделяет его после загрузки страницы.
Он находится в той версии Chrome, которая запущена на моем столе, но в настоящее время его необходимо включить вручную. Предположительно, скоро он будет включен по умолчанию в производственных сборках Chrome, и другие браузеры последуют за ним, так что хорошо, чтобы начать добавлять свои ссылки сейчас, и тогда он начнет работать.
Ответы:
Просто добавьте, за
#
которым следует идентификатор<a>
тега (или другого HTML-тега, например, a<section>
), к которому вы пытаетесь добраться. Например, если вы пытаетесь создать ссылку на заголовок в этом HTML:Вы можете воспользоваться ссылкой
<a href="http://url.to.site/index.html#target">Link</a>
.источник
id
ofid="in-closing">Some string</id>
несколько раз, гдеSome string
пару раз становился новой строкой.id
. По определениюid
должен быть уникальным для этого тегаwww.site.com/page/#target
это случайно, это не удалось. Убедитесь, что/
в конце URL-адреса нет символа.Создайте «ссылку перехода», используя следующий формат:
Где якорь - это идентификатор элемента, на который вы хотите создать ссылку на этой странице. Используйте инструменты разработки браузера / просмотрите исходный код, чтобы найти идентификатор элемента, на который вы хотите создать ссылку.
Если у элемента нет идентификатора, и вы не контролируете этот сайт, вы не можете этого сделать.
источник
Это возможно только в том случае, если этот сайт объявил якоря на странице. Это делается путем присвоения тегу имени или атрибута id. , поэтому ищите любой из них, близкий к тому, на что вы хотите ссылку.
И тогда синтаксис будет
источник
name
Атрибут поддерживается только на<a>
элементе для этого, и это является устаревшим в HTML 5.Если целевая страница находится в том же домене (т.е. имеет то же происхождение, что и ваша страница), и вы не возражаете против создания новых вкладок (1), вы можете (ab) использовать некоторый 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>
Интересный факт:
Рабочий пример такого «эксплойта», который вы можете попробовать прямо сейчас, может быть:
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')
Если вы введете это в адресную строку (помните, что Chrome удаляет
javascript:
префикс при вставке из буфера обмена) или сделайте егоhref
значением любой ссылки на этой странице (с помощью инструментов разработчика) и щелкните по нему, вы получите еще одну (дублированную) страницу вопроса SO с прокруткой до нижний и нижний колонтитулы окрашены в красный цвет. (Задержка добавлена в качестве обходного пути для содержимого, загруженного с помощью ajax, смещающего нижний колонтитул после загрузки.)Примечания
window.open(url,'_self')
кажется, нарушаетload
событие; в основном заставляетwindow.open
вести себя как обычнаяa href=""
навигация по щелчку; еще не исследовал.источник
javascript:
ссылок, введенных в адресную строку, больше не работает в большинстве браузеров с настройками по умолчанию, как предотвращение самонастройки XSS. Но вы можете попробовать его в консоли веб-разработчиков, где он должен хорошо работать.В первую очередь цель относится к BlockID, найденному в инструментах разработчика HTML-кода или хрома, на которые вы пытаетесь установить ссылку. Каждый код отличается, и вам нужно будет немного покопаться, чтобы найти идентификатор, на который вы пытаетесь сослаться. Он должен выглядеть примерно так.
div class="page-container drawer-page-content" id"PageContainer"
Обратите внимание, что это формат для всего указанного раздела, а не для отдельного текста или изображения. Для этого вам нужно будет найти тот же фрагмент кода, но относящийся к вашему целевому блоку. Например, вdv id="your-block-id"
любом случае, я просто читал эту ветку, и мне пришла в голову идея, если вы являетесь пользователем Shopify и хотите это сделать, это почти то же самое, что указано. Но вместоВы бы положили
Например, я настраиваю страницу отказа от ответственности со ссылками, ведущими на подписку на информационный бюллетень и блоки покупок на моей домашней странице, поэтому я вставляю
https://mystore-classifier.com/#shopify-section-1528945200235
свою гиперссылку. Обратите внимание, что -classifier предназначен для моего внутреннего использования и не относится к вам. Это просто для того, чтобы я мог отслеживать свои магазины. Если вы хотите разместить ссылку не на свою домашнюю страницу, вы должны указатьНадеюсь, кто-то нашел это полезным, если что-то не так с моим объяснением, дайте мне знать, так как я не программист HTML, мой язык - C #!
источник
Предстоящая функция Chrome «Прокрутить до текста» - это именно то, что вы ищете ....
https://github.com/bokand/ScrollToTextFragment
Вы в основном добавляете
#targetText=
в конец URL-адреса, и браузер прокручивает целевой текст и выделяет его после загрузки страницы.Он находится в той версии Chrome, которая запущена на моем столе, но в настоящее время его необходимо включить вручную. Предположительно, скоро он будет включен по умолчанию в производственных сборках Chrome, и другие браузеры последуют за ним, так что хорошо, чтобы начать добавлять свои ссылки сейчас, и тогда он начнет работать.
источник