【问题标题】:window.location.reload(); is losing viewstate in IE8window.location.reload();在 IE8 中失去视图状态
【发布时间】:2012-02-14 09:59:44
【问题描述】:

单击按钮时,我需要确保窗口控件更改为新的新元素(选项卡)。因此,我在 html 中使用了这样的东西:

<input id="back" type="button" value="Back to Form" onclick="backTo();">

对应的JS代码是:-

function backTo(){
    window.location.href='#fragment-1';
    window.location.reload();
}

在 Firefox 中执行上述操作时,控制权将返回到元素(fragment-1),其字段中输入了文本数据。虽然 IE8 控件中的相同内容返回到 fragment-1 元素,但所有输入 prev 的文本数据都丢失了。

此外,我已将 Cache-control 参数设置为 public,并尝试查看这是否有助于在控制返回给定 div/元素时从缓存中加载视图状态。

有什么遗漏吗?

【问题讨论】:

    标签: javascript firefox internet-explorer-8 viewstate reload


    【解决方案1】:

    嗯..这取决于特定浏览器如何保存页面状态..
    也可以尝试使用history.go()方法http://www.w3schools.com/jsref/met_his_go.asp看看问题是否解决。

    【讨论】:

    • 我尝试了 history.go() 并且它也在导航到新元素,但仍然缺少视图状态(文本字段中的文本)。
    【解决方案2】:

    如何重新提交表单而不是重新加载:

    document.forms[0].submit();//assumed there is only one form in you page
    

    更新:应该这样做: 假设下面的 div 是您希望将控件转移到的元素,请使用 scrollIntoView 函数:

    <div id="fragment-1" name="fragment-1">
    ....
    </div>
    
    document.getElementById('fragment-1').scrollIntoView();
    

    【讨论】:

    • 我不想发布到服务器,但希望控件转到文档中的另一个元素。由于这是选项卡式应用程序,因此在单击 bakc 按钮时,我想导航到上一个选项卡而不更改状态。
    • 恐怕这不适用于 Mozilla 和 IE8。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多