Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发布到表单后,JQUERY缓存if Back按钮-JQUERY fadeIn仍然可见_Jquery_Caching_Browser Cache_Back Button - Fatal编程技术网

发布到表单后,JQUERY缓存if Back按钮-JQUERY fadeIn仍然可见

发布到表单后,JQUERY缓存if Back按钮-JQUERY fadeIn仍然可见,jquery,caching,browser-cache,back-button,Jquery,Caching,Browser Cache,Back Button,我在JQUERY fadeIn的末尾发布了一个表单 当用户点击submit-a DIV'切换屏幕时,会显示 其中的消息通过JQUERY淡入并覆盖表单页面 一旦div在-javascript中完全消失,然后将表单发布到 另一页 Javascript: Theform = document.getElementById('customers_form'); $('#SWITCHING_SCREENS').fadeIn('slow', function(){ Th

我在JQUERY fadeIn的末尾发布了一个表单

  • 当用户点击submit-a DIV'切换屏幕时,会显示 其中的消息通过JQUERY淡入并覆盖表单页面
  • 一旦div在-javascript中完全消失,然后将表单发布到 另一页
Javascript:

    Theform = document.getElementById('customers_form');

    $('#SWITCHING_SCREENS').fadeIn('slow', function(){
        Theform.submit();
    });
Theform = document.getElementById('customers_form');

$('#SWITCHING_SCREENS').fadeIn('slow', function(){
    Theform.submit();
    $('#SWITCHING_SCREENS').hide();
});
这一切都很好,我并没有提交或任何其他问题。 但如果用户点击浏览器后退按钮(firefox),切换屏幕仍然可见

我已经看到表单元素的back按钮缓存,但希望JQUERY在back按钮上重置。或者我只是没想到它会被缓存

  • 它似乎已缓存?
  • JQUERY是否缓存了DIV的这种状态?
我试过:

Javascript:

    Theform = document.getElementById('customers_form');

    $('#SWITCHING_SCREENS').fadeIn('slow', function(){
        Theform.submit();
    });
Theform = document.getElementById('customers_form');

$('#SWITCHING_SCREENS').fadeIn('slow', function(){
    Theform.submit();
    $('#SWITCHING_SCREENS').hide();
});
这确实弥补了使用浏览器后退按钮时处于“fadeIn”状态的DIV缓存问题

但它也会在页面实际切换到发布页面之前删除DIV。我希望div在页面发布到下一页时保持可见,并且在访问者点击后退按钮时消失

这似乎只发生在Firefox中

多谢各位。
注意。

将此代码放在pageload上

$(document).ready(function({  
    $('#SWITCHING_SCREENS').hide();
    ..... rest of your code will go here.........
}));
您可以使用它,它不会专门截取后退按钮,而是截取卸载当前页面的任何事件。它可以是基于浏览器的任何点击链接前进按钮后退按钮

$(window).unload( function () { $('#SWITCHING_SCREENS').hide(); });
当用户导航时,卸载事件被发送到窗口元素 远离页面。这可能意味着许多事情之一。用户可以 单击某个链接以离开页面,或在 地址栏。前进和后退按钮将触发事件。 关闭浏览器窗口将触发事件。即使 页面重新加载将首先创建卸载事件


不是jQuery缓存了任何东西,而是浏览器缓存了用户上次看到的页面状态。这是正常的,有些人说这是更好的行为。例如,如果您滚动到页面底部,然后单击链接(将您带到新页面),然后单击“上一步”按钮,浏览器甚至可能会将您再次带到页面底部,就在您离开页面的地方

因此,我建议如下:

$('#SWITCHING_SCREENS').fadeIn('slow', function(){
    $(window).unload( function () { $('#SWITCHING_SCREENS').hide(); });
    Theform.submit();
});

嘿,我不是100%确定你想做什么,但这可能会有所帮助,但听起来你希望用户在表单页面1上。点击提交2。等待中三。然后转到另一页

  $(document).on('click', 'a', function(event){ 

        $.post(
            $(this).attr('href'),
            {url: "url",
             dataType: "html",
            },
            function( data )
            {

        $('#content').fadeOut(function(){
        $(this).replaceWith(data).fadeIn(); 

         });
        }
        );
        return false;
    });
如果您回击或向前点击,这将提交表单从服务器加载新页面,而不记录url。它只会重新加载页面以显示表单

php端

<?php
// Determing if this is an include or ajax call
if( $_POST["url"] = $_POST['url'] ){ ?>

<div id="content">
new page data
</div>

<?php  }else{ ?>


 <div id="content">

your form </div>

<?php } ?>

新页面数据
你的表格

这可能更像是一个“黑客”,我很抱歉对jquery来说是新手。

这个答案应该有效,FF似乎正在缓存jquery fadeIn元素中存储的CSS。通过隐藏document ready事件上的元素,您正在从fadeIn缓存中删除CSS。