window.location的样子
示例
URL:http://d.a.com:9000/index.html?name=ddd&when=2017#first
属性 | 含义 | 值 |
protocol | 协议 | "http:" |
hostname | 服务器的名字 | "d.a.com" |
port | 端口 | "9000" |
pathname | URL中主机名后的部分 | "/index.html" |
search | "?"后的部分,又称为查询字符串 | "?name=ddd&when=2017" |
hash | 返回"#"之后的内容 | "#first" |
host | 等于hostname + port | "d.a.com:9000" |
href | 当前页面的完整URL | "http://www.a.com:88/index.php?name=kang&when=2011#first" |
方法
location.assign( url )
location.assign('http://www.baidu.com'); 等同于 window.location = 'http://www.baidu.com'
这种方式会讲新地址放到浏览器历史栈中,意味着转到新页面后“后退按钮”仍可以回到该页面。
location.replace( url )
与assign方法一样,但会从浏览器历史栈中删除本页面,也就是说跳转到新页面后“后退按钮”不能回到该页面。目前IE、Chrome只是简单的跳转,只有Firefox会删除本页面的历史记录。
location.reload( force )
重新载入当前页面。force为true时从服务器端重载;false则从浏览器缓存中重载,默认值false
Window.open的参数小结(参书改编) 先看一个例子:
[javascipt:]window.open("Webpage.asp?",Derek,"height=100,width=100,status=yes,toolbar=yes, menubar=no,location=no");此语句打开一个新窗口,页面为webpage.asp,参数为var,名字为Derek,高为100,宽为100,显示状态栏和工具条,不显示菜单和地址。
具体总结的各个属性参数如下:
window = object.open([URL ][, name ][, features ][, replace]]]])
URL:新窗口的URL地址
name:新窗口的名称,可以为空
featurse:属性控制字符串,在此控制窗口的各种属性,属性之间以逗号隔开。
fullscreen= { yes/no/1/0 } 是否全屏,默认no
channelmode= { yes/no/1/0 } 是否显示频道栏,默认no
toolbar= { yes/no/1/0 } 是否显示工具条,默认no
location= { yes/no/1/0 } 是否显示地址栏,默认no
directories = { yes/no/1/0 } 是否显示转向按钮,默认no
status= { yes/no/1/0 } 是否显示窗口状态条,默认no
menubar= { yes/no/1/0 } 是否显示菜单,默认no
scrollbars= { yes/no/1/0 } 是否显示滚动条,默认yes
resizable= { yes/no/1/0 } 是否窗口可调整大小,默认no
width=number 窗口宽度(像素单位)
height=number 窗口高度(像素单位)
top=number 窗口离屏幕顶部距离(像素单位)
left=number 窗口离屏幕左边距离(像素单位)
关于本题中,第二个参数的详解:
name可以为:
_blank 表示新开一个窗口,
_parent表示父框架窗口,
_self表示覆盖该窗口,
xxx表示覆盖名字为xxx的窗口
(每个窗口都可以给他命名)
不能为省略,可以为空!
获取url中携带参数的方法
/*返回一个对象,包含url中所有参数*/
const getRequest = function() { let url = window.location.search; //获取url中"?"符后的字串 let theRequest = new Object(); if (url.indexOf("?") != -1) { let str = url.substr(1); if (str.indexOf("&") != -1) { let strs = str.split("&"); for (let i = 0; i < strs.length; i++) { theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } else { theRequest[str.split("=")[0]] = unescape(str.split("=")[1]); } } return theRequest; }
/*根据要获取的参数名称,返回url中对应参数值*/ (name)=> { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); var r = decodeURIComponent(window.location.search.substr(1)).match(reg); if (r != null) return unescape(r[2]); return null;
}