加载页面时,如何更改地址栏中的URL
How do you change a URL in the address bar while loading the page?
类似于单击此<a href='http://www.mysite.com/page.php?v=foo&z=bar'>
然后,当页面加载完成时,地址栏中的URL应该显示为这样的http://www.mysite.com/page.php
,而不需要查询。
这就像当你试图登录到网络邮件时,例如,你输入用户名和密码,他们使用查询字符串,对吗?但是当页面已经完成加载时,URL没有任何查询。
我的理解是,当我们更改地址栏的URL时,web浏览器会在不刷新页面的情况下触发请求,即204。
如果你不想在URL中显示元素,用户可以使用post方法的HTML表单
<form action="page.url" method="post">
<input type="hidden" name="param_name" value="value"/>
</form>
以下是您可以使用的策略。。。从用户体验的角度来看,我不认为它真的很棒,但它实现了你的目标:
- 在第一次加载时处理查询字符串参数,并将它们存储在会话数组(
$_SESSION
(中 - 重定向到不带查询字符串参数的同一页面
- 对现在存储在
$_SESSION
中的参数值执行任何需要执行的操作
正如我所说,我不认为这是一种壮观的方法,而且它会产生潜在的副作用,你必须在代码中处理,这似乎不值得付出代价。此外,即使使用这种方法,包含查询字符串参数的URL也会出现在客户端的浏览历史记录中,因此最终您不会真正隐藏任何内容(假设这是您的目标(。
另一种需要考虑的方法是对您的请求使用POST方法,而不是GET方法。您只需将参数作为请求的有效负载而不是查询字符串来传递。
最好的方法是使用htaccess。此文件与索引文件一起位于您网站的根目录中。
您的htaccess文件必须以开头
Options +FollowSymlinks
RewriteEngine on
然后你所需要做的就是(对于你使用的例子(:
RewriteRule ^page.php page.php?v=$1&z=$2
有关htaccess的更多信息:http://corz.org/serv/tricks/htaccess.php
在不重新加载页面的情况下更改URL的唯一方法是将位于after
的内容更改为#
字符。
在此之前发生的任何更改都将导致页面重新加载。
请参阅HTML5's pushState
,并将其与使用AJAX加载的内容一起使用。BEware,维护起来可能相当复杂,除了最新的浏览器外,其他浏览器都不支持它。
使用它的网站示例:http://www.shopify.com/tour/website-design
- 地址栏中url的缩短
- 是否可以更改更改特定事件在地址栏或浏览器中的URL
- 如何在地址栏中的URL更改Firefox JPM时获得通知
- 如何在不重定向用户的情况下更改地址栏URL(不使用历史API?)
- 使用表单动态更改地址栏中的URL第2部分
- 禁止在 URL 地址栏上使用 Javascript
- 使用 javascript/jquery 点击 DOM 元素后更改地址栏中的 URL
- 使用表单动态更改地址栏中的 URL
- HTML5网站在丝绸浏览器中进入全屏模式或在加载URL后在丝绸浏览器中隐藏地址栏
- 更改浏览器地址栏中的URL,而无需重新加载现有页面
- 在 PHP 的 URL 地址栏中传递 Javascript 链接
- 更改地址栏中的完整 URL,而无需重新加载页面
- 在弹出元素中打开 url(获取新标题和地址栏)
- 如何在Safari的地址栏中运行javascript(外部URL)
- 未保存在地址栏中的 URL
- 在 PHP 中获取顶部框架(浏览器中的地址栏)URL
- 无法导航到 URL 地址栏,只能通过单击链接
- Fancybox:更改地址栏url的链接,并链接到一个打开Fancybox的页面
- 如何把地址栏url在href属性
- 在Asp.net中加密地址栏url