click方法导致Firefox屏幕问题

问题描述

| 问题与Firefox在调用函数时将浏览器窗口刷新到100%有关。 如果浏览器视图表示75%,并且我在链接上使用.click方法-页面以100%刷新,然后函数执行。 Safari无需刷新窗口即可执行该功能。 现在的代码如下所示:
function hideFlag(){

    $(\"#ftm\").click(function () { 

    var stageWidth = $(\"#window_div\").width();
    if (stageWidth <= 1200){

        $( \"#window_div\" ).animate({
            width: 1250,opacity: \".8\",},1000 );
        $( \"#flagDiv\" ).animate({
          opacity: \"0\",1000 ); 
        }
    else{
        $( \"#window_div\" ).animate({
        width: 500,opacity: \".6\",1000 );
        $( \"#flagDiv\" ).animate({
        opacity: \"1\",1000 );
        }   
    });
}
在Firefox中,如果我的浏览器视图缩小到75%,并且我将.click()方法替换为.mouseenter,则div会设置动画,而不会重新绘制屏幕或调整mouseenter的大小。我不了解click()和mouseenter()实现之间的区别。 解决了。 这比我想的要简单得多。在click方法上正确使用\“ return false; \”参数 解决了我的问题。修改后的代码如下:
function hideFlag(){

            $(\"#ftm\").click(function () { 
                var stageWidth = $(\"#window_div\").width();
                if (stageWidth <= 1200){
                    $( \"#window_div\" ).animate({
                        width: 1250,1000 ); return false;
                    $( \"#flagDiv\" ).animate({
                        opacity: \"0\",1000 ); return false;
                    }
                else{
                    $( \"#window_div\" ).animate({
                        width: 500,1000 );return false;
                    $( \"#flagDiv\" ).animate({
                        opacity: \"1\",1000 );return false;
                }   
            });
}
谢谢大家的帮助。     

解决方法

并不是说这是您问题的直接答案,而是要发表评论的时间很长。 您正在使用jQuery。我认为您正在丢失整个跨浏览器库的内容。更改
stageWidth = document.getElementById(\"window_div\").clientWidth
stageWidth = $(\"#window_div\").width()
不需要特定于浏览器的代码。使用jQuery时,也不需要该“ 4”功能。它照顾了浏览器之间的差异,因此您不必这样做。这意味着您可以将“ 5”功能更改为此:
function setUpClickHandler() {
    $(\'#ftm\').click(hideFlag);
    $(\'#ath\').click(showFlag);
}
并将ѭ7更改为:
function showFlag(e){
    $(\'#flagDiv\').show();
}
并改变
addEventHandler(window,\"load\",setUpClickHandler,false);
$(window).load(setUpClickHandler);