游客发表
最直接的跳转办法,就是网页网页用 <a> 标签。比如你写 <a href="page2.html">去第二页</a>,跳转用户点一下,网页网页浏览器就加载同目录下的跳转 page2.html。这是网页网页最原始、也最稳的跳转跳转方式。我见过不少新手卡在这里,网页网页以为要写什么 JavaScript,跳转其实一个 href 就够了。网页网页
但有个细节容易踩坑:路径。如果你的两个 HTML 文件不在同一层目录,比如 index.html 在根目录,而 about.html 在 pages 文件夹里,那 href 就得写成 pages/about.html。反过来,如果从 pages 里的文件跳回根目录的 index.html,得用 ../index.html。写错路径,浏览器直接给你一个 404,连跳转的机会都没有。
有时候跳过去还得传点东西。比如登录后跳转到主页,要把用户名带过去。直接在 URL 后面加 ?username=zhangsan 就行。接收方用 JavaScript 解析 location.search 就能拿到。这种写法在表单提交里也常见,不过表单默认是 GET 方法,参数会拼在 URL 上,页面会刷新跳转。
<a href="welcome.html?user=zhangsan&role=admin">进入后台</a> 注意那个 &,在 HTML 里必须写成实体形式,否则某些浏览器会解析出错。我早期写页面时因为这个符号被坑过,跳转后参数只剩一半。
不是所有跳转都得靠用户点击。比如倒计时三秒后自动跳转,或者表单验证通过后再跳,这时候用 JS 更灵活。核心就一句:window.location.href = "target.html"。想替换当前历史记录,用 location.replace("target.html"),这样用户按返回键不会回到跳转前的页面。
<script> setTimeout(function() { window.location.href = "https://example.com"; }, 3000); </script> 上面这段代码放在页面底部,三秒后自动跳去外部站点。我做过一个活动页,用户扫码后停留三秒展示品牌,然后自动跳转,用的就是这套逻辑。比 meta 刷新更可控,因为还能加条件判断。
在 <head> 里写 <meta http-equiv="refresh" content="5;url=page2.html">,五秒后自动跳。这种写法现在不推荐,因为用户体验差——用户没法控制,而且有些浏览器会拦截。但如果你在维护一个十年前的内部系统,可能还会遇到它。我去年改一个老后台,里面全是 meta 跳转,改起来反而比 JS 麻烦。
表单的 action 属性直接指向目标 HTML 文件,提交后浏览器就跳过去了。默认 method 是 GET,数据会跟在 URL 后面。如果不想让用户看到参数,改成 POST,但目标页面得用后端语言接收,纯 HTML 拿不到 POST 数据。所以纯静态页面之间跳转,还是用链接或 JS 更省事。
<form action="result.html" method="get"> <input type="text" name="keyword"> <button type="submit">搜索</button> </form> 提交后地址栏会变成 result.html?keyword=xxx。我见过有人用这种方式做页面间传参,简单粗暴,但参数一多就乱。超过三个字段,建议换 localStorage 或 sessionStorage,跳转前存,跳转后读。
<a> 标签加 target="_blank" 会开新标签页,不加就在当前页跳转。移动端浏览器对 _blank 的处理不太一致,有些会直接覆盖当前页。我自己的习惯是:站内跳转不加 target,站外链接加 rel="noopener" 配合 _blank,防止钓鱼攻击。这个细节很多人忽略,但安全审计时会被揪出来。
还有一点,用 JS 的 window.open("page2.html") 也能开新窗口,但会被浏览器拦截,除非是用户点击触发的。所以别在页面加载时自动调它,否则弹窗拦截器直接给你干掉。
跳转本身很简单,麻烦的是跳过去之后怎么恢复状态。比如用户在一个列表页翻了五页,点进详情再返回,列表页重新加载,滚动位置没了。这时候可以用 history.pushState 改 URL 但不刷新,或者跳转前把滚动位置存 sessionStorage。我最近做的一个后台,用 sessionStorage.setItem('scrollPos', window.scrollY),返回时再读出来,体验提升明显。
跳转不是孤立动作,它连着前一个页面的状态和后一个页面的初始化。只盯着 href 写对,往往不够。
友情链接