讲师中心 微信公众号
AI工具推荐 视频效率加速

html如何在网页中打开另一个网页

秋明姑娘_4045

秋明姑娘_4045

发布时间:2026-02-15 20:53:02

|

1937人浏览过

|

来源于php中文网

原创

window.open()是唯一原生、可控、跨浏览器一致的新页打开方式,它新开标签页或窗口而非跳转;错误使用_target="_self"会覆盖当前页,相对路径基于当前URL解析,iframe仅嵌入内容而非打开新页。

html如何在网页中打开另一个网页

用 window.open() 打开新网页最直接

浏览器里打开另一个网页,window.open() 是唯一原生、可控、跨浏览器一致的方法。它不是“跳转”,而是新开一个上下文(标签页或窗口),保留原页面状态。

常见错误是写成 window.open('url', '_self')——这其实等价于 location.href = 'url',会覆盖当前页,根本没“打开”新页。

  • window.open('https://example.com'):默认在新标签页打开(取决于浏览器设置,但行为可预期)
  • window.open('https://example.com', '_blank'):显式声明新标签页,更清晰
  • window.open('about:blank', 'myWin') 然后 myWin.document.write(...):动态写入内容,适合轻量弹窗,但注意同源限制
  • 如果 URL 是相对路径(如 './detail.html'),它基于当前页面 URL 解析,不是 HTML 文件所在目录

target="_blank" 只适用于 <a></a> 标签

想点链接就开新页?<a href="https://a.com" target="_blank">点我</a> 是最简单可靠的方式。但它只对 <a></a> 生效,对 <button></button> 或 <div> 没用——有人硬加 <code>target 属性,纯属无效。

容易被忽略的坑:target="_blank" 默认让新页面和原页面共享同一个浏览上下文(browsing context),这意味着新页能通过 window.opener 访问原页的 window 对象——有安全风险,尤其打开不可信域名时。

立即学习“前端免费学习笔记(深入)”;

  • 必须加上 rel="noopener noreferrer":<a href="https://evil.com" target="_blank" rel="noopener noreferrer">别点</a>
  • 不加 noopener,恶意网站可通过 window.opener.location = 'https://phish.com' 劫持你的页面
  • noreferrer 还会阻止 Referer 头发送,影响部分分析统计

不能用 iframe “打开”网页,只能嵌入

有人把 <iframe src="https://b.com"></iframe> 当作“打开”,这是误解。iframe 是把另一个网页的内容**嵌进当前页面的一个框里**,它不是独立标签页,不获得焦点,URL 不变,也不出现在浏览器历史中。

HTML Text Extract
HTML Text Extract

从HTML页面(URL、文件或标准输入)中提取主体内容文本,去除导航、页脚、广告和模板文本。可直接传递给readability_check或其他文本工具。

下载

而且现代网站普遍设 X-Frame-Options: DENY 或 Content-Security-Policy: frame-ancestors 'none',直接导致 iframe 加载失败,控制台报错:Refused to display 'https://x.com/' in a frame because it set 'X-Frame-Options' to 'DENY'.

  • 适合场景:嵌入自己可控的子页面(如后台管理页里的模块)、公开支持嵌入的第三方服务(YouTube、Google Maps)
  • 不适合场景:试图绕过跳转、假装“打开”外部新闻站或登录页
  • 替代思路:用 window.open() 打开,再通过 postMessage 与新窗口通信(需双方同源或明确授权)

移动端 Safari 和某些安卓浏览器对 window.open() 有限制

用户手势触发是硬性要求。在 iOS Safari 中,如果 window.open() 不在 click、touchend 等用户直接交互事件回调里调用,会被静默拦截——没报错,也没反应。

典型翻车现场:异步请求回来后自动开窗:fetch('/api/url').then(() => window.open(url)) → 在 iPhone 上大概率失败。

  • 必须确保调用栈顶层是用户事件处理器:button.addEventListener('click', () => { fetch(...).then(() => window.open(...)); })
  • 不能靠 setTimeout 或 Promise 微任务“延迟执行”来绕过,浏览器认的是调用链源头
  • 某些安卓 WebView(如微信内置浏览器)还会额外拦截无协议 URL(如 window.open('example.com')),务必写全 https://

真正难的不是语法,是搞清你到底要“跳转”“弹窗”还是“嵌入”,以及目标环境是否允许你这么做。浏览器策略每年都在收紧,靠猜不如查 MDN 的 window.open() 兼容表和当前 userAgent 行为。

热门AI工具

更多
咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6207

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2628

2023.08.10

promise的用法
promise的用法

“promise” 是一种用于处理异步操作的编程概念,它可以用来表示一个异步操作的最终结果。Promise 对象有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。Promise的用法主要包括构造函数、实例方法(then、catch、finally)和状态转换。

4620

2023.10.12

html文本框类型介绍
html文本框类型介绍

html文本框类型有单行文本框、密码文本框、数字文本框、日期文本框、时间文本框、文件上传文本框、多行文本框等等。详细介绍:1、单行文本框是最常见的文本框类型,用于接受单行文本输入,用户可以在文本框中输入任意文本,例如用户名、密码、电子邮件地址等;2、密码文本框用于接受密码输入,用户在输入密码时,文本框中的内容会被隐藏,以保护用户的隐私;3、数字文本框等等。

4263

2023.10.12

location.assign
location.assign

在前端开发中,我们经常需要使用JavaScript来控制页面的跳转和数据的传递。location.assign就是JavaScript中常用的一个跳转方法。通过location.assign,我们可以在当前窗口或者iframe中加载一个新的URL地址,并且可以保存旧页面的历史记录。php中文网为大家带来了location.assign的相关知识、以及相关文章等内容,供大家免费下载使用。

2942

2023.06.27

iPhone文本消息乱序错误如何解决?
iPhone文本消息乱序错误如何解决?

解决办法:1、强制关闭消息应用程序;2、重启你的iPhone;3、自动禁用设置并再次启用;4、关闭iMessage并重新打开;5、重置所有设置;6、使用ReiBoot修复iOS。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3358

2024.11.19

删除iPhone上所有照片的方法
删除iPhone上所有照片的方法

删除iPhone上所有照片的方法;1、删除整个照片库;2、从相册中删除所有照片;3、仅从图库中删除照片;4、仅删除视频,屏幕截图,自拍,实时或人像照片;5、删除某人的所有照片;6、永久删除已删除的照片等等。想了解更多相关的内容,请阅读专题下面的文章。

6970

2024.12.11

iPhone静音开关不起作用
iPhone静音开关不起作用

若 iPhone 静音开关失效,先检查硬件,看开关状态、清洁缝隙。接着重启手机,查看静音及勿扰模式设置,更新系统。若都不行,可恢复出厂设置(提前备份)。若仍无效,可能是严重硬件问题,需联系苹果客服或去授权维修中心。

520

2025.03.20

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 228人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn