繁体   English   中英

如何在页面刷新时更新页面URL?

[英]How to update page url on page refresh?

我正在寻找一种在用户刷新页面时更改页面url(更改url键值之一)的方法。 我这样做是为了反映页面内容的变化。 我尝试了几种方法,但是它们都有循环问题。 下面是方法之一:

在我的html页面中:

<body onLoad="CheckPageLoad();">
    <input type="hidden" name="trial" id="trial" value="hello" />
</body>

在page.asp页中:( 在script标签内

function CheckPageLoad() {
    if ($("#trial").val() == "hello") {
        // This is a fresh page load
        alert('Load');
        $("#trial").val("hi");
    } else {
        // This is a page refresh
        window.location = url;
        alert('Refresh');
    }
}

问题

  1. 每次刷新页面时,始终显示“加载”警报。 我认为加载一次完成。 看起来每次刷新页面时都会重新加载,因此该值始终保持问候状态。
  2. 我尝试仅使用脚本标签,但新的URL已打开,但一直循环播放。 (这是主要问题)

任何更新上述方法或使用另一种方法进行刷新的建议均应受到赞赏。 以下是我也尝试过的其他方法:

window.onbeforeunload = unloadPage();

function unloadPage() {
    //do something
    //works but loops
}

谢谢

我将以下代码放到基本页面中,它演示了为什么您得到描述的行为:

<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
        <script type="text/javascript">
            function CheckPageLoad() {
                if ($("#trial").val() == "hello") {
                    // This is a fresh page load
                    alert('Load');
                    $("#trial").val("hi");
                } else {
                    // This is a page refresh
                    alert('Refresh');
                    window.location = window.location + '?id=1';
                }
            }
        </script>
    </head>
    <body onLoad="CheckPageLoad();">
        <input type="hidden" name="trial" id="trial" value="hello" />
    </body>
</html>

设置window.location时,它会更改url(嗯!),因此意味着您正在加载新页面。 刷新页面后,在“加载”之前会收到“刷新”警报。 这表明页面先发布,但是onload事件导致页面导航到另一个位置,因此再次加载。 据我了解,更新URL中的任何内容最终都是一个新的请求/新加载的页面。

您可能会发现以下有关asp中的视图状态的有用信息(如您所建议的那样,您正在使用asp页面): http : //msdn.microsoft.com/zh-cn/library/ms972976.aspx

我的建议是完全删除window.location = url; 代码的一部分,以便查看发回的数据。 这意味着您不必在回发时不必要地加载页面两次,并允许您从任何更新的输入中访问数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM