window.open和location.href区别

1.window.location是window对象的属性,而window.open是window对象的方法

  window.location是你对当前浏览器窗口的URL地址对象的参考!  

  window.open是用来打开一个新窗口的函数!

2.window.open不一定是打开一个新窗口!!!!!!!!  

  只要有窗口的名称和window.open中第二个参数中的一样就会将这个窗口替换,用这个特性的话可以在iframe和frame中来代替location.href。

如<iframe name="aa"></iframe>  

  <input type=button   onclick="window.open('1.htm','aa','')">和  

  <input type=button  

   onclick="self.frames['aa'].location.href='1.htm'">的效果一样

3.window.location或window.open如何指定target?

这是一个经常遇到的问题,特别是在用frame框架的时候

解决办法:

window.location 改为 top.location 即可在顶部链接到指定页

window.open("你的网址","_top");

用户不能改变document.location(因为这是当前显示文档的位置)。

window.location本身也是一个对象。

   但是,可以用window.location改变当前文档 (用其它文档取代当前文档),而document.location不是对象。

   服务器重定向后有可能使document.url变动,但window.location.href指的永远是访问该网页时用的URL.

   大多数情况下,document.location和location.href是相同的,但是,当存在服务器重定向时,document.location包含的是已经装载的URL,而location.href包含的则是原始请求的文档的URL.

self.location.href="/url"       当前页面打开新页面,与默认的location.href 或者是windows.location.href 或者是 this.location.href 效果一样

parent.location.href="/url" 在父页面打开新页面

 

top.location.href="/url"       在顶层页面打开新页面

### 正确使用 `window.open` `window.location.href` #### 使用场景 对于页面跳转的需求,开发者可以选择两种主要方式来实现:通过设置 `window.location.href` 或调用 `window.open()` 函数。 #### 设置 `window.location.href` 当希望在同一窗口内改变当前页面地址时,可以简单地给 `window.location.href` 赋值新的URL字符串。这会使得浏览器加载并显示该链接指向的内容,类似于用户点击了一个超链接的效果[^1]: ```javascript // 修改当前页面位置为指定的新网址 window.location.href = "http://example.com"; ``` 此操作不会创建额外的浏览上下文(即不开启新标签页),而是直接替换掉现有文档的位置记录。 #### 调用 `window.open()` 另一方面,如果目标是在保持原页面不变的情况下另起一个新的浏览环境,则应该考虑采用 `window.open(url, target)` 来完成这一任务[^3]。第二个参数指定了新资源应在何处展示,默认情况下是 `_self`(当前框架),也可以设定成其他特殊名称如 `_blank` 表示新开一个空白标签页;或者是已命名过的窗口/iframe的名字以便重用特定容器: ```javascript // 在新标签页中打开外部网站 var newWindow = window.open("https://www.example.org", "_blank"); if (!newWindow || newWindow.closed || typeof newWindow.closed=='undefined') { console.error('Popup blocked'); } ``` 值得注意的是,在某些安全策略下,弹出窗口可能会被阻止,因此最好加入检测逻辑以应对这种情况的发生。 #### 参数传递及其他特性 除了基本的功能差异外,这两个API还提供了更多灵活性供开发人员利用。比如可以通过向 `window.open()` 提交第三个可选参数列表来自定义子窗口外观尺寸其他行为特征;而对于 `location` 对象来说,还可以访问其下的多个只读属性获取有关当前位置的信息,像主机名(`hostname`)、端口号(`port`)等[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值