2011-03-24 122 views
4

我有一個表格的網頁上,那我的工作,和(因爲它是一個相當一路下跌),如果有一個錯誤,我追加的URL以Firefox的散列錨鏈接問題

show?comments=2#track_1 

其中評論= 2位是關於哪個字段出錯的反饋,而track_1是我的表單所在的div的ID。這在IE中很有用(至少8),但在Firefox中,頁面只是在頂部,而不會跳到相關部分。

奇怪的是,當我選擇URL並按下地址欄中的回車鍵(即當我手動到達地址,而不是由表單的驗證反饋生成),它在Firefox中起作用!

任何人有什麼想法可以發生什麼?

編輯

注:這隻發生在javascript關閉的時候(儘管這正是我需要它工作的時候!)

+0

如何更改網址? – 2011-03-24 13:49:59

+0

如果表單失敗,在我的控制器(我正在使用PHP zend)我寫道:'return $ this - > _ redirect('/ artists/show?'。$ commentsFail。'#track_'。($ params ['tracknb'] - 1));'其中$ commentsFail是在上面的 – tiswas 2011-03-24 14:12:09

回答

7

你的問題聽起來像一個已知的bug。 Upvote它here

0

使用正確的方式#sign,這不是通過ID! 你的名字,像這樣的錨點的位置:

<a name="track_1"></a> 
+2

中讀取'comments = 2'的URL的一部分。這是不正確的。它也會跳轉到具有相應ID的元素。見:http://dev.w3.org/html5/spec/Overview.html#scroll-to-fragid – 2011-03-24 13:44:13

+0

好的,謝謝你:) – Tobias 2011-03-24 13:47:26

+0

所以如果ID是正確的,什麼問題? – tiswas 2011-03-24 13:50:37

1

如果您在頁面中有自動對焦,這可能是問題的原因。嘗試移除自動對焦並測試。

如果是這個原因,請通過此link upvote在Mozilla中的錯誤。

0

將此添加到javascript以更正視圖,更改YOUR_ANCHOR,以獲取具有問題的錨的名稱。

$(document).ready(function(){ 
var anchor_id = window.location.hash; if (anchor_id != "#YOUR_ANCHOR") { 
      var new_position = $(anchor_id).offset(); 
      window.scrollTo(new_position.left,new_position.top); 
} 
}; 

這應該重置Firefox的問題。

0

如果您在smoothScroll中使用jQuery,則下面的腳本將放在所有其他javascript之後。您可以檢查它在http://cafedethaireno.net/index.php#togo_menu

$(document).ready(function(){ 
var h = window.location.hash; 
if (h) { 
    var headerH = $('#navigationMenu').outerHeight(); 
    $('html, body').stop().animate({ 
     scrollTop : $(h).offset().top - headerH + "px" 
    }, 1200, 'easeInOutExpo'); 

     event.preventDefault(); 
} 
}); 

希望這有助於在Firefox的工作,我使用一個固定的標題導航抵消了榜首的位置,但代碼很容易被操縱,以適應。

0

對我來說,這個問題是通過去除非字母數字字符(,包括空格)像雙點(也是url編碼的%3A),只使用-_來解決的。作爲分隔符。

沒有真正涉及到您的問題,但也許其他人:

替換破折號所有空格,下劃線或點,然後刪除所有非 字母數字字符,它應該工作。