1 c#后台获取当前界面的url
如果测试的url
地址是http://www.test.com/testweb/default.aspx
, 结果如下:
1
2
3
4
5
6
7
8
9
10
11Request.ApplicationPath: /testweb
Request.CurrentExecutionFilePath: /testweb/default.aspx
Request.FilePath: /testweb/default.aspx
Request.Path: /testweb/default.aspx
Request.PhysicalApplicationPath: E:\WWW\testwebRequest.
PhysicalPath: E:\WWW\testweb\default.aspx
Request.RawUrl: /testweb/default.aspx
Request.Url.AbsolutePath: /testweb/default.aspx
Request.Url.AbsoluteUrl: http://www.test.com/testweb/default.aspx
Request.Url.Host: http://www.test.com/
Request.Url.LocalPath: /testweb/default.aspx
2 前台修改相关url
2.1 html标签跳转
1 | <head> |
优点:简单
缺点:Struts Tiles
中无法使用
- 控制
parent
页面跳转,这个其实用不到jQuery
1 | window.parent.location.href = "*****"; |
2.2 调用parent
页面的函数,其实也不用jQuery
1 | window.parent.method(para); |
- 2.3 操作
parent
的DOM
1 | $(".test", window.parent.document).remove(); |
2.4 location.href
1 | self.loction.href="/url" |
以上两个用法相同均为在当前页面打开URL页面
1 | this.location.href="/url" |
当前页面打开URL
1 | parent.location.href="/url" |
在父页面打开新页面,如果页面中自定义了frame
,那么可将parent
self
top
换为自定义frame
的名称,效果是在frame
窗口打开url地址
1 | top.location.href="/url" |
在顶层页面打开新页面
2.5 关于刷新页面
1
2
3
window.location.href=window.location.href
window.location.Reload()
都是刷新当前页面。区别在于是否有提交数据。当有提交数据时,第二种会提示是否提交,第一种则是向指定的url
提交数据
2.6 js
获取url
相关参数
1 | // 获取地址栏的参数数组 |
2.7 js设置url相关参数
1 | //Js修改Url参数 |
3 HTML5无刷新修改URL
HTML5新添加了两个api
分别是pushState
和replaceState
,DOM中的window
对象通过window.history方
法提供了对浏览器历史记录的读取,可以在用户的访问记录中前进和后退,我们可以开始操作这个历史记录堆栈。
1 | <head> |
4 HTML5模拟翻页效果
1 | var changeURL = function(){ |
5 html5hash
比如:我点击页面上的一个按钮,网址栏中的地址发生改变,但是页面不跳转也不刷新,但是我手动刷新此页面的时候,实际要刷新地址栏中的新地址 其实HTML5
早就帮我们解决了 用history.pushState
详情: https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
pushState
方法pushState()
有三个参数:state
对象,标题
(现在是被忽略,未作处理),URL
(可选)。具体细节
state对象
是一个JavaScript
对象,它关系到由pushState()
方法创建出来的新的history
实体。用以存储关于你所要插入到历史记录的条目的相关信息。State
对象可以是任何Json
字符串。因为firefox
会使用用户的硬盘来存取state
对象,这个对象的最大存储空间为640k
。如果大于这个数 值,则pushState()
方法会抛出一个异常。如果确实需要更多的空间来存储,请使用本地存储。
title
firefox
现在回忽略这个参数,虽然它可能将来会被使用上。而现在最安全的使用方式是传一个空字符串,以防止将来的修改。或者可以传一个简短的标题来表示state
URL
这个参数用来传递新的history
实体的URL
,注意浏览器将不会在调用pushState()
方法后加载这个URL
。但也许会过一会尝试加载这个URL
。比如在用户重启了浏览器后,新的url
可以不是绝对路径。如果是相对路径,那么它会相对于现有的url
。新的url
必须和现有的url
同域,否则pushState()
将抛出异常。这个参数是选填的,如果为空,则会被置为document
当前的url
。
某种意义上来说,调用pushState()
方法很像设置了window.location = “#foo”
,这两者都会创建
和激活
另一个关联到当前document
的history
实体,但pushState()
另外有一些优点:
新的
url
可以是任何和当前url
同域的url
,相比之下,如果只设置hash
,window.location
会保持在同一个document
。如果不需要,你可以不修改
url
。对比而言,设置window.location = “#foo”;
仅产生新的history
实体,如果你当前的hash
不是#foo
你可以将任意的数据与你的新
history
实体关联。使用基于hash
的方法,需要将所有相关的数据编码为一个短字符串。
注意,pushState()
方法不会使hashchange
时间发生,即使是新旧url
只是hash
不同。
如浏览器地址为http://localhost:8080/tts6/user/teachertts6?pMUploadHomework=success
改变为http://localhost:8080/tts6/user/teachertts6
不用请求后台,直接改变url
地址,怎么办了?很简单一句话1
2
3
4
5
6
7//window.location为//http://localhost:8080/tts6/user/teachertts6?pMUploadHomework=success
var state = {title:'',url:window.location.href.split("?")[0]};
history.pushState(state,'','teachertts6');
//现在浏览器的地址变为//http://localhost:8080/tts6/user/teachertts6