簡體   English   中英

頁面加載時阻止瀏覽器跳轉到#name

[英]Stop browser from jumping to #name when page loads

我在jQuery對話框中有一個名為“登錄”的表單。 在JavaScript中,我檢測URL中是否包含“ #login”-如果是,它將顯示登錄對話框。 在FF / Safari / Chrome中,它可以正常工作,但在IE6 / 7中,顯示對話框時,瀏覽器頁面會跳到表單頂部。 我想防止這種情況的發生。

我在這里找到了我的問題的答案,它給出了以下示例代碼:

$('a.anchor').remove().prependTo('body');

我將“ a.anchor”更改為“ form.anchor”,但無法正常工作。 首次加載mydomain /#login時,IE仍跳至表單頂部。 然后,如果我刷新頁面,它將再次顯示對話框,但不會跳下來。

任何想法如何全局只是防止IE跳到任何形式/錨名稱?

我建議使用查詢參數或類似的參數,例如page.html?showlogin = true。 URL上的page.html#xxxxx旨在將瀏覽器滾動到頁面上的該ID。

中途http://www.w3schools.com/html/html_links.asp解釋了名稱屬性。

否則,您將進行一些混亂的黑客操作,以繞過瀏覽器執行他們應做的事情。

........不要在代碼中使用不想使用的命名錨點嗎?

有合理的理由使用這種方式使用井號。 在Ajaxian應用程序中,它可以幫助管理瀏覽器歷史記錄。

除非有命名錨點,否則所有瀏覽器(包括IE)都應忽略location.hash,除非IE喜歡跳到具有該ID或NAME的任何元素。 所以如果你有

<form name="login" ...

要么

<form id="login" ...

甚至

<div id="login"><form name="somethingElse"...

可能會導致IE將其視為傳統的哈希標記並跳下來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM