如何通过 js 打开一个新的浏览器窗口

本文详细介绍了如何利用window.open方法在新标签页或新窗口打开网页,包括配置弹窗属性和利用window.opener获取源窗口对象的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Aphorism

Grow In Errors!

前言

最近 肾七 电池不耐用了, 想想 左腹就隐隐作痛, 咳咳 ,回归正题, 我就联系了下 apple 客服,准备换个 电池,2018年 12.31 前 更换苹果电池是有优惠政策的。 在打开 聊天室的时候, 突然 发现 浏览器重新打开了 窗口; 又回想到了 之前公司的 登陆 表单也是 在一个小窗口中打开输入登陆信息的。 嗯, 强迫症来了

主要api

  1. window.open 打开动作
  2. window.opener 由谁打开的

打开新的 tab 和 打开新的 浏览器窗口

origin page

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>origin Page</title>
</head>

<body>
    i am origin page!
    <br>
    <p>
        <a href="javascript:;" onclick="jumpPage();">window.open 打开新标签页</a>
    </p>
    <p>
        <a href="http://www.w3school.com.cn" target="_blank">html方式 打开新标签页</a>
    </p>
    <p>
        <a href="javascript:;" onclick="openRequestedPopup();">window.open 打开新的浏览器窗口</a>
    </p>
    <br>
    <script>
    window.name = "origin";

    function open_win() {
        window.open("http://www.w3school.com.cn")
    }

    function jumpPage() {
        window.open("http://www.w3school.com.cn", 'hello');
    }

    var windowObjectReference;
    var strWindowFeatures = "width=1000,height=500,menubar=yes,location=yes,resizable=yes,scrollbars=true,status=true";


    function openRequestedPopup() {
        // windowObjectReference = window.open("http://www.w3school.com.cn", "CNN_WindowName", strWindowFeatures);
        windowObjectReference = window.open("./b.html", "B_page", strWindowFeatures);
  
        setTimeout(function () {
         	//windowObjectReference.close(); // 我们页面中关闭 或进行其他操作 打开的 窗口页

         	console.log(windowObjectReference.position); // 10s 后 在origin winodw 控制台 打印 B_page 视口对象中的position 成员
         }, 10000);
    }
    </script>
</body>
</html>

b page

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>b page</title>
</head>
<body>
	i am b page!
	<script>
		console.log(window.name);
		var position = "b page";
		console.log(window.opener.name); // 通过这个方法获取 源窗口对象 //  注意跨域页面是不能获取到的
	</script>
</body>
</html>

打开新的 tab 标签页 就不多做解释了

我们通过 window.open 方法 的第三个参数 strWindowFeatures 配置后, 就可以在新的窗口中打开, 该方法会返回 打开的窗口对象。 在新的窗口中,我们也可以通过 window.opener 来获取到 源窗口 对象。

### 如何在浏览器中通过代码打开窗口 为了实现在浏览器中通过代码打开窗口的功能,JavaScript 提供了 `window.open()` 方法。此方法允许创建一个新的浏览器窗口或标签页来加载指定的 URL 或者自定义的内容。 #### 使用 JavaScript 打开带有特定内容的新窗口 可以通过以下方式向新窗口写入 HTML 内容: ```javascript // 创建并打开窗口 var newWindow = window.open('', '_blank'); // 向新窗口写入 HTML 文档结构 newWindow.document.write('<html><head><title>新窗口</title></head><body><h1>这是一个窗口</h1></body></html>'); ``` 这段脚本会创建一个空白的新窗口,并在其内部编写一段简单的 HTML 代码[^1]。 #### 利用超链接属性 `_blank` 来触发新窗口行为 除了直接使用 JavaScript 外,在 HTML 中也可以设置 `<a>` 标签的目标属性为 `_blank`,从而使得点击该链接时会在新的浏览上下文中展示目标资源文件。 ```html <a href="http://example.com" target="_blank">访问 Example 网站</a> ``` 这种方式简单易行,适用于大多数场景下的外部链接导航需求[^2]。 #### 结合 jQuery 库简化操作流程 对于熟悉 jQuery 的开发者来说,还可以借助这个流行的库来进行更简洁的操作。例如,可以利用事件处理机制配合 `window.open()` 函数快速响应用户的交互动作。 ```javascript $(document).ready(function(){ $('#openNewWin').click(function(e){ e.preventDefault(); $.get('path/to/page', function(data){ var win = window.open(''); $(win.document.body).html(data); }); }); }); ``` 这里展示了如何监听某个按钮的点击事件,并在此基础上执行 AJAX 请求获取远程数据填充至新开窗体内[^3]。 #### Vue.js 路由配置中的应用实例 如果是在基于 Vue Router 构建的应用程序里,则可能涉及到更加复杂的逻辑——比如根据不同的条件决定是否要在当前视图还是另起一页呈现组件。此时可以在路由守卫或者导航钩子处做文章,确保满足业务要求的同时保持良好的用户体验。 ```javascript router.beforeEach((to, from, next) => { const { meta } = to; if (meta.newTab && typeof(to.query.url)!=='undefined'){ let url = decodeURIComponent(to.query.url); window.open(url,'_blank'); next({ path: '/' }); // 返回首页或其他默认路径 } else{ next(); // 继续正常渲染下一个匹配项 } }) ``` 上述例子说明了怎样判断是否要开启新标签页以及具体实施的方法[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值