Jquery加载在Firefox中无法正常工作

时间:2014-01-30 09:12:53

标签: javascript jquery firefox

我在开发的网站上遇到了脚本问题。它在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);

            });
    });

4 个答案:

答案 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;