firefox哈希锚网址问题

时间:2011-03-24 13:30:44

标签: html firefox url anchor

我在页面上有一个表单,我正在处理,并且(因为它已经相当不错了),如果出现错误,我将附加网址

show?comments=2#track_1

其中comments = 2位是关于哪个字段出错的反馈,track_1是我的表单所在的div的id。这在IE中很有用(至少8个),但是在Firefox中,页面只是位于顶部,而没有跳到相关部分。

奇怪的是,当我选择URL并在地址栏中输入时(即当我手动转到地址时,而不是由表单的验证反馈生成),它可以在firefox中运行!

任何人对可能发生的事情都有任何想法?

修改

n.b。只有关闭javascript才会发生这种情况(尽管这正是我需要它才能工作的时候!)

6 个答案:

答案 0 :(得分:7)

你的问题听起来像一个已知的错误。 Upvote it here

答案 1 :(得分:1)

如果页面中有自动对焦,则可能是问题的原因。尝试删除自动对焦并进行测试。

如果是这个原因,请通过此link对mozilla中的错误进行投票。

答案 2 :(得分:0)

使用正确的#-sign方式,这不是ID! 你必须用这样的锚来命名这个位置:

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

答案 3 :(得分: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问题。

答案 4 :(得分:0)

如果您正在使用带有smoothScroll的jQuery,则在所有其他javascript之后放置以下脚本将起作用。您可以在http://cafedethaireno.net/index.php#togo_menu

在Firefox中查看它
$(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();
}
});

希望这有帮助,我使用固定的标题导航来偏移顶部位置,但代码可以很容易地被操纵以适应。

答案 5 :(得分:0)

对我来说,这个问题是通过删除非字母数字字符(包括空格)来解决的,例如双点(也就是url编码的%3A),只使用-_。作为分隔符。

与您的问题没有关系,但可能与其他人有关:

  

用短划线,下划线或点替换所有空格,然后删除所有空格   字母数字字符,它应该工作。