2008-11-05 9 views
40

Рассмотрим следующий код:Программным выделите тег Anchor

<a href="#label2">GoTo Label2</a> 
... [content here] ... 
<a name="label0"></a>More content 
<a name="label1"></a>More content 
<a name="label2"></a>More content 
<a name="label3"></a>More content 
<a name="label4"></a>More content 

Есть ли способ, чтобы эмулировать нажатия на «GoTo Label2» ссылка для перехода к соответствующей области на странице с помощью кода?

EDIT: приемлемой альтернативой может быть прокрутка к элементу с уникальным идентификатором, который уже существует на моей странице. Я бы добавил метки привязки, если это жизнеспособное решение.

+0

Похожий вопрос http://stackoverflow.com/questions/6666038/asp-net-postback-scroll-to-specific-position – 2016-01-16 05:10:47

ответ

71

Этот JS в целом работает хорошо для меня, если вы положили ID на элемент:

document.getElementById('MyID').scrollIntoView(true); 

Это хорошо, как это будет также положение прокруткой дивы и т.д., так что содержание видна.

Mike.

+0

спасибо mike, это на самом деле именно то, что я искал! – Anders 2008-11-05 17:34:14

+1

Это замечательно, Майк - огромное спасибо! – 2010-12-10 17:59:31

2

Я полагаю, что это будет работать:

window.location="<yourCurrentUri>#label2"; 
0

вы можете просто открыть новый URL-адрес с именем добавленным, например http://www.mysite.com/mypage.htm#label2

В Javascript,

location.href = location.href + '# label2';

+0

Не будет ли этот разрыв, если выполнить его несколько раз? http://www.mysite.com/mypage.htm#label2#label2 – EndangeredMassa 2008-11-05 17:09:48

11

Использование JavaScript:

window.location.href = '#label2'; 

Если вам нужно сделать это с сервера/код позади, вы можете просто испускать этот Javascript и зарегистрировать его в качестве сценария запуска для этой страницы.

+0

Это отлично подойдет для меня, все еще может использовать якорь. Управление веб-браузером, встроенное в приложение winforms. – FastAl 2010-11-23 21:33:19

1

Если элемент является якорем тег, вы должны быть в состоянии сделать:

document.getElementsByName('label2')[0].focus(); 
+0

У вас есть ошибка в вашем коде - это document.getElementsByName. Источник - http: // stackoverflow.com/questions/7816863/how-to-use-document-getelementbyname-and-getelementbytag – 2016-06-08 15:30:14

1

нет "#", когда вы используете window.location.hash

1

Решение

document.getElementById('MyID').scrollIntoView(true); 

хорошо работает практически во всех браузерах, тогда как я заметил, что в некоторых браузерах или на некоторых мобильных устройствах (например, некоторых версиях Blackberry) функция «scrollIntoView» не распознается, поэтому я бы рассмотрел это решение (немного уродливее предыдущего):

window.location.href = window.location.protocol + "//" + window.location.host + 
         window.location.pathname + window.location.search + 
         "#MyAnchor"; 
3

Перемещение на якорь со стороны сервера, пример C#.

ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#form';", true); 
Смежные вопросы