我在开发的网站上遇到了脚本问题。它在Safari,Opera和Chrome中运行良好,但它在firefox中不起作用。
当您单击链接时,我尝试将div #contain从内部链接加载到overlay div,然后取消隐藏。所有这些在我上面提到的浏览器中运行良好,但它不能在firefox中运行,click函数只是打开链接(重新加载页面),就像通常那样。
任何想法为什么它在Firefox中不起作用?我缺少什么?
$(document).ready(function(){
var $ov = $('.overlay'),
$tp = $('#transparent'),
URL = ' ',
siteURL = "http://" + top.location.host.toString(),
$internal = $("a[href^='"+siteURL+"'], a[href^='/'], a[href^='./'], a[href^='../'], a[href^='#']:not('.no')"),
hash = window.location.hash,
$el, $allLinks = $("a");
$tp.hide();
$ov.hide();
$tp.click(function(){
$ov.empty();
$tp.hide();
$ov.hide();
});
if (hash) {
$ov.show();
$tp.show();
hash = hash.substring(1);
URL = hash + " #contain";
$ov.load(URL);
};
$internal.each(function(){
$(this).attr("href", "#" + this.pathname);
}).click(function(){
$tp.show();
$ov.show();
$el = $(this);
URL = $el.attr("href").substring(1);
URL = URL + " #contain",
$ov.load(URL);
});
});
答案 0 :(得分:1)
我认为您在点击功能中缺少preventDefault。这告诉jQuery / javascript不遵循默认操作,在你的情况下,链接指向HREF的任何地方都会跟随。
而不是
$tp.click(function(){
$ov.empty();
$tp.hide();
$ov.hide();
});
应该是
$tp.click(function(e){
e.preventDefault;
$ov.empty();
$tp.hide();
$ov.hide();
});
答案 1 :(得分:0)
$tp.click(function(
尝试
$(document).on('click','#transparent',function(event){
//do whatever you want to do
});
答案 2 :(得分:0)
问题不在于你们有些人建议的点击功能,它必须是关于location.hash的。
当我检查互联网的任何其他可能性时,我发现firefox中存在一个常见错误,其中使用window.location.hash时链接未正确编码。
但我仍然无法解决我的问题。所以我感谢任何其他可能有助于找到解决方案的建议。
答案 3 :(得分:0)
尝试更改浏览器的默认行为:
(event.preventDefault) ? event.preventDefault() : event.returnValue = false;