JavaScript Location 对象详解:属性、方法与页面跳转实战

作者:木棉

时间:2026-10-22

浏览:147

本文深入解析 JavaScript 中的 Location 对象,详细阐述其用于获取和操作当前窗口 URL 的核心功能。文章系统介绍了 protocol、hostname、pathname 等关键属性,以及 reload() 和 replace() 等方法的使用场景。通过具体的代码示例,展示了如何利用 window.location 和 top.location 实现单页面参数传递、指定框架跳转及回到首页等常见前端交互需求。

文章目录

Location 对象基础与安全限制

Location 对象用于描述特定窗口所打开的 URL 地址。若需表示当前窗口的地址,直接使用“location”即可;若需操作其他窗口的地址,则使用“<窗口对象>.location”。此前曾探讨过利用 window.location.href 刷新其他框架页面的方法,此处进一步梳理 location 的详细用法并进行优化,具体实现如下。



需注意,出于安全考虑,不同协议或不同主机的两个地址之间无法相互引用对方的 location 对象。例如,当前窗口访问“www.a.com”下的页面,而另一个名为 bWindow 的窗口访问“www.b.com”的网页。若在当前窗口尝试访问“bWindow.location”,将触发“没有权限”的错误。该错误无法通过错误处理程序(如 onerror 事件)捕获。



首先简要介绍 location 的属性、用法及相关示例。


Location


该对象包含当前 URL 的完整信息,描述了与给定 Window 对象关联的完整 URL。location 对象的各个属性分别对应 URL 的不同组成部分。


通常情况下,URL 遵循以下格式:协议//主机:端口/路径名称#哈希标识?搜索条件。


例如:http://www.ijavascript.cn/jiaocheng/index.html#topic1?x=7&y=2,各部分含义如下:





“协议”指 URL 的起始部分,直至第一个冒号。



“主机”指主机名、域名或网络主机的 IP 地址。



“端口”指服务器用于通信的端口号。



“路径名称”指 URL 中的路径信息。



“哈希标识”指 URL 中的锚名称,包含哈希符号 (#)。此属性仅适用于 HTTP 协议的 URL。



“搜索条件”指 URL 中的查询信息,包含问号。此属性仅适用于 HTTP 协议的 URL。“搜索条件”字符串包含变量与值的配对,各对之间由“&”连接。



   

Location 属性详解

属性概览





protocol:返回地址的协议,取值如 'http:'、'https:'、'file:' 等。



hostname:返回地址的主机名。例如,对于“http://www.microsoft.com/china/”地址,location.hostname 的值为 'www.microsoft.com'。



port:返回地址的端口号,HTTP 默认端口通常为 '80'。



host:返回主机名和端口号,例如 'www.a.com:8080'。



pathname:返回路径名。例如,对于“http://www.a.com/b/c.html”,location.pathname 的值为 'b/c.html'。



hash:返回“#”及其后的内容。例如,对于“http://www.a.com/b/c.html#chapter4”,location.hash 的值为 '#chapter4';若地址中无“#”,则返回空字符串。



search:返回“?”及其后的内容。例如,对于“http://www.a.com/b/c.asp?selection=3&jumpto=4”,location.search 的值为 '?selection=3&jumpto=4';若地址中无“?”,则返回空字符串。



href:返回上述所有内容的组合,即完整地址。浏览器地址栏显示何种格式,该属性即返回何种格式。若需让某窗口对象打开指定地址,可使用“location.href = '...'”,或直接使用“location = '...'”达到相同目的。





Location 常用方法

方法概览





reload():功能等同于点击浏览器上的“刷新”(IE)或“Reload”(Netscape)按钮。



replace():打开指定 URL,并替换历史记录中当前位置的地址。使用此方法打开新 URL 后,点击浏览器的“后退”键将无法返回之前的页面。



  

页面跳转实战代码示例

二、location 实现页面跳转的 JavaScript 代码如下:


//简单跳转


function gotoPage(url) {


// eg. var url = "newsview.html?catalogid="+catalogID+"&pageid="+pageid;


window.location = url;


} 

// 对location用法的升级,为单个页面传递参数


function goto_catalog(iCat) {


if(iCat<=0) {


top.location = "../index.aspx"; // top出去


} else {


window.location = "../newsCat.aspx?catid="+iCat;


}
}

// 对指定框架进行跳转页面,二种方法皆可用


function goto_iframe(url) {


parent.mainFrame.location = "../index.aspx"; //


// parent.document.getElementById("mainFrame").src = "../index.aspx";// use dom to change page // 同时我增加了dom的写法


} 

// 对指定框架进行跳转页面,因为 parent.iframename.location="../index.aspx"; 方法不能实行,主要是 "parent.iframename" 中的iframename在js中被默认为节点,而不能把传递过来的参数转换过来,所以用dom实现了该传递二个参数的框架跳转页面,希望那位仁兄不吝赐教!


function goto_iframe(iframename,url) {


parent.document.getElementById(iframename).src = "../index.aspx";// use dom to change page by iframeName


//}  

// 回到首页


function gohome() {


top.location = "/index.aspx";}


} 

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章