我在页面上有一个表单,我正在处理,并且(因为它已经相当不错了),如果出现错误,我将附加网址
show?comments=2#track_1
其中comments = 2位是关于哪个字段出错的反馈,track_1是我的表单所在的div的id。这在IE中很有用(至少8个),但是在Firefox中,页面只是位于顶部,而没有跳到相关部分。
奇怪的是,当我选择URL并在地址栏中输入时(即当我手动转到地址时,而不是由表单的验证反馈生成),它可以在firefox中运行!
任何人对可能发生的事情都有任何想法?
修改
n.b。只有关闭javascript才会发生这种情况(尽管这正是我需要它才能工作的时候!)
答案 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),只使用-_。作为分隔符。
与您的问题没有关系,但可能与其他人有关:
用短划线,下划线或点替换所有空格,然后删除所有空格 字母数字字符,它应该工作。