Javascript window.location脚本不断重新加载

时间:2013-05-30 08:48:05

标签: javascript html cookies

我正在尝试创建一个小型网络应用,我通过Javascript在网址中更新2个参数。

当我尝试"window.location.search = 'scene.html?name=' + person + '&scene=' + readCookie("scene");"

页面不断重新加载。我正在尝试分配当前的场景'每当页面被加载时,参数就会增加一个值。

为什么我的页面会永久地重新加载null和未定义的值?

3 个答案:

答案 0 :(得分:1)

当您更新window.location时,浏览器将尝试请求您现在将其设置为的新网址。

如果您想更新网址而不正在重新加载的网页,您有两个选项,或者只更新hash(这是可以添加到URL的结尾,并以#字符开头,不会导致页面加载,也不会发送到服务器。或者你可以考虑使用HTML5 pushState API,它只有较新的浏览器支持,但提供了更大的灵活性。

答案 1 :(得分:0)

如果您想更新两个参数,那么这就足够了:

window.location.search = '?name=' + person + '&scene=' + readCookie("scene");

也就是说,您不需要添加scene.html

"window.location.search" is the content of the current url after '?'.

因此,当您为其分配另一个值时,浏览器将更新它并将请求发送到服务器。

答案 2 :(得分:0)

首先,我不理解你为什么要这样做。

每当你更改window.location时,浏览器都应该去那里。这就是你获得重载效果的原因。你可以从没有重新加载的位置改变的唯一方法就是哈希(#)部分。

你可以做的另一件事是使用pushState的浏览器的manipulate the history(只有最新版本支持)并更改url而不重新加载(并且服务器也不会知道更改),例如: window.history.pushState({},"","scene.html?name=123");

另请注意,由于您更改了该位置的搜索属性,因此不应包含路径名(scene.html)。所以正确的方法是:window.location.search = '?name=' + person + '&scene=' + readCookie("scene");