2008-11-05 31 views
40

Xét đoạn mã sau:Lập trình di chuyển đến một Tag Neo

<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 

Có cách nào để bắt chước cách nhấp vào liên kết "GoTo Label2" để di chuyển đến khu vực thích hợp trên trang thông qua mã?

CHỈNH SỬA: Cách thay thế có thể chấp nhận là cuộn đến phần tử có id duy nhất đã tồn tại trên trang của tôi. Tôi sẽ thêm các thẻ neo nếu đây là một giải pháp khả thi.

+0

tương tự câu hỏi http://stackoverflow.com/questions/6666038/asp-net-postback-scroll-to-specific-position –

Trả lời

71

JS này thường đã làm việc tốt cho tôi nếu bạn cũng nên đặt một ID trên yếu tố:

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

này là tốt vì nó cũng sẽ xác định vị trí các div cuộn vv để các nội dung có thể nhìn thấy.

Mike.

+0

cảm ơn mike này thực sự là chính xác những gì tôi đang tìm kiếm! – Anders

+1

Điều này thật tuyệt, Mike - cảm ơn rất nhiều! –

2

Tôi cho rằng điều này sẽ làm việc:

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

bạn chỉ có thể mở URL mới với tên nối, ví dụ http://www.mysite.com/mypage.htm#label2

Trong javascript,

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

+0

sẽ không phá vỡ này nếu bạn thực hiện nó nhiều hơn một lần? http://www.mysite.com/mypage.htm#label2#label2 – EndangeredMassa

11

Sử dụng javascript:

window.location.href = '#label2'; 

Nếu bạn cần phải làm điều đó từ máy chủ/code phía sau, bạn có thể chỉ phát ra javascript này và đăng ký nó như là một kịch bản khởi động cho trang đó.

+0

Điều này hiệu quả đối với tôi, vẫn có thể sử dụng neo. Điều khiển Webbrower được nhúng trong một ứng dụng winforms. – FastAl

1

Nếu nguyên tố này là một thẻ neo, bạn sẽ có thể làm:

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

Bạn có lỗi trong mã của mình - đó là document.getElementsByName. Nguồn - http: // stackoverflow.com/questions/7816863/how-to-use-document-getelementbyname-and-getelementbytag –

1

không "#" khi bạn sử dụng window.location.hash

1

Giải pháp

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

hoạt động tốt trong hầu hết các trình duyệt, trong khi tôi nhận thấy rằng trong một số trình duyệt hoặc trong một số điện thoại di động (chẳng hạn như một số phiên bản Blackberry), chức năng "scrollIntoView" không được nhận dạng, vì vậy tôi sẽ xem xét giải pháp này (hơi xấu hơn so với trước đó):

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

Di chuyển đến một neo từ phía máy chủ, ví dụ là C#.

ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#form';", true); 
+0

hoạt động như một sự quyến rũ – Micro

+0

Giúp tôi cũng vậy .. – VixterJ

Các vấn đề liên quan