最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實(shí)現(xiàn)返回到上一頁的三種方法

 更新時(shí)間:2026年01月21日 10:23:43   作者:AI老李  
在網(wǎng)頁開發(fā)中,實(shí)現(xiàn)返回上一頁功能非常常見,JavaScript 提供了多種方式來實(shí)現(xiàn),下面詳細(xì)介紹三種最常用且可靠的方法,并附帶優(yōu)缺點(diǎn)對比和使用場景,需要的朋友可以參考下

JavaScript 返回到上一頁的三種常用方法

在網(wǎng)頁開發(fā)中,實(shí)現(xiàn)“返回上一頁”功能非常常見。JavaScript 提供了多種方式來實(shí)現(xiàn),下面詳細(xì)介紹三種最常用且可靠的方法,并附帶優(yōu)缺點(diǎn)對比和使用場景。

方法一:history.back()(最常用,推薦)

// 直接返回上一頁,等同于點(diǎn)擊瀏覽器“后退”按鈕
history.back();

// 或者
history.go(-1);

說明

  • history.back()history.go(-1) 效果完全相同。
  • 會觸發(fā)瀏覽器的歷史記錄后退,頁面狀態(tài)(如表單填寫、滾動(dòng)位置)通常能保持(取決于瀏覽器實(shí)現(xiàn))。

示例(按鈕點(diǎn)擊返回):

<button onclick="history.back()">返回上一頁</button>

優(yōu)點(diǎn)

  • 簡單、直觀。
  • 用戶體驗(yàn)最好,模擬真實(shí)后退行為。
  • 支持頁面狀態(tài)恢復(fù)。

缺點(diǎn)

  • 如果當(dāng)前頁是歷史記錄的第一頁,會無效(不會跳轉(zhuǎn))。

方法二:history.go(-1)(等同于 back)

history.go(-1);  // 后退一步
// history.go(-2); // 后退兩步
// history.go(1);  // 前進(jìn)一步

說明

  • history.go(n) 中的 n 是整數(shù),正數(shù)前進(jìn),負(fù)數(shù)后退。
  • history.back() 完全等價(jià),只是寫法不同。

使用場景

  • 需要?jiǎng)討B(tài)控制后退步數(shù)時(shí)更靈活。

方法三:window.location.href = document.referrer(根據(jù)來源頁跳轉(zhuǎn))

if (document.referrer) {
    window.location.href = document.referrer;
} else {
    // 如果沒有來源頁(比如直接打開),跳轉(zhuǎn)到指定頁面
    window.location.href = '/index.html';
}

說明

  • document.referrer 返回引發(fā)當(dāng)前頁面跳轉(zhuǎn)的上一個(gè)頁面的 URL(字符串)。
  • 直接設(shè)置 location.href 實(shí)現(xiàn)跳轉(zhuǎn)。

完整安全示例

<button onclick="goBack()">返回上一頁</button>

<script>
function goBack() {
    if (document.referrer && document.referrer !== window.location.href) {
        window.location.href = document.referrer;
    } else {
        // 備選方案:跳轉(zhuǎn)到首頁或指定頁面
        window.location.href = '/';
    }
}
</script>

優(yōu)點(diǎn)

  • 可以明確知道要跳轉(zhuǎn)到哪個(gè)頁面。
  • 在某些單頁應(yīng)用(SPA)中更可控。

缺點(diǎn)

  • 如果用戶是通過直接輸入 URL、書簽或搜索引擎進(jìn)入當(dāng)前頁,document.referrer 會為空。
  • 不會保留瀏覽器歷史棧的“后退”狀態(tài)(屬于新跳轉(zhuǎn))。
  • 跨域時(shí) referrer 可能被屏蔽(受 Referrer-Policy 影響)。

三種方法對比總結(jié)

方法代碼是否模擬瀏覽器后退referrer 是否為空時(shí)行為是否保留頁面狀態(tài)推薦度
history.back() / go(-1)history.back()無效(停留在當(dāng)前頁)通常保留★★★★★
history.go(-1)history.go(-1)無效通常保留★★★★★
document.referrerlocation.href = referrer否(新跳轉(zhuǎn))需要手動(dòng)處理備選頁面不保留★★★

最佳實(shí)踐建議

大多數(shù)場景優(yōu)先使用 history.back()

<button onclick="history.back()">返回</button>

需要兼容無來源頁的情況,結(jié)合 referrer:

function goBack() {
    if (history.length > 1) {
        history.back();
    } else {
        window.location.href = '/'; // 跳轉(zhuǎn)到首頁
    }
}
  1. 移動(dòng)端或單頁應(yīng)用(Vue/React) 中常用 history.back(),配合路由守衛(wèi)更優(yōu)雅。

總結(jié):99% 的情況下,直接使用 history.back() 就是最佳選擇,簡單可靠,用戶體驗(yàn)最好。

到此這篇關(guān)于JavaScript實(shí)現(xiàn)返回到上一頁的三種方法的文章就介紹到這了,更多相關(guān)JavaScript返回到上一頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript實(shí)現(xiàn)MD5加密算法指南

    JavaScript實(shí)現(xiàn)MD5加密算法指南

    本文主要介紹了JavaScript實(shí)現(xiàn)MD5加密算法指南,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • 詳細(xì)聊聊TypeScript中unknown與any的區(qū)別

    詳細(xì)聊聊TypeScript中unknown與any的區(qū)別

    unknown類型比較謙虛,就和他本身的意思一樣,他從不禍害到其他的變量,但是any類型就是那種惡霸,屬于什么都不管,誰也不敢管的類型,這篇文章主要給大家介紹了關(guān)于TypeScript中unknown與any區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • js控制文本框只能輸入中文、英文、數(shù)字與指定特殊符號的實(shí)現(xiàn)代碼

    js控制文本框只能輸入中文、英文、數(shù)字與指定特殊符號的實(shí)現(xiàn)代碼

    下面小編就為大家?guī)硪黄猨s控制文本框只能輸入中文、英文、數(shù)字與指定特殊符號的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • javascript form 驗(yàn)證函數(shù) 彈出對話框形式

    javascript form 驗(yàn)證函數(shù) 彈出對話框形式

    javascript合法驗(yàn)證 js數(shù)據(jù)驗(yàn)證、js email驗(yàn)證、js url驗(yàn)證、js長度驗(yàn)證、js數(shù)字驗(yàn)證等(彈出對話框形式)
    2009-06-06
  • js時(shí)間戳格式化成日期格式的多種方法

    js時(shí)間戳格式化成日期格式的多種方法

    js需要把時(shí)間戳轉(zhuǎn)為為普通格式,一般的情況下可能用不到的,下面與大家分享幾種不錯(cuò)的方法,感興趣的朋友不要錯(cuò)過
    2013-11-11
  • JavaScript四種調(diào)用模式和this示例介紹

    JavaScript四種調(diào)用模式和this示例介紹

    JavaScript調(diào)用時(shí)除了聲明時(shí)定義的形參外,每個(gè)函數(shù)接受兩個(gè)附加參數(shù):this 和arguments,下面為大家介紹下JavaScript四種調(diào)用模式和this
    2014-01-01
  • javascript實(shí)現(xiàn)日期按月份加減

    javascript實(shí)現(xiàn)日期按月份加減

    JavaScript實(shí)現(xiàn)日期加減計(jì)算功能代碼實(shí)例,因?yàn)樵趈s中沒有類似C#中的AddDays方法,所以要想實(shí)現(xiàn)日期加減的話,就需要自己寫函數(shù)來實(shí)現(xiàn)。這里分享給大家,有需要的小伙伴可以參考下
    2015-05-05
  • 手機(jī)端轉(zhuǎn)盤抽獎(jiǎng)代碼分享

    手機(jī)端轉(zhuǎn)盤抽獎(jiǎng)代碼分享

    轉(zhuǎn)盤,也有一種說法叫抽獎(jiǎng)轉(zhuǎn)盤,大體上是由一塊圓形的面板上面有很多的獎(jiǎng)項(xiàng)設(shè)置,在圓形面板的前面,還有一根指針是固定的,下面,小編給大家分享手機(jī)端轉(zhuǎn)盤抽獎(jiǎng),需要的朋友可以參考下
    2015-09-09
  • JS路由跳轉(zhuǎn)的簡單實(shí)現(xiàn)代碼

    JS路由跳轉(zhuǎn)的簡單實(shí)現(xiàn)代碼

    本文給大家分享一個(gè)簡單的js路由跳轉(zhuǎn)功能,非常不錯(cuò),需要的朋友參考下吧
    2017-09-09
  • javascript prototype原型操作筆記

    javascript prototype原型操作筆記

    在 JavaScript 中,prototype 不但能讓對象共享自己財(cái)富,而且 prototype 還有尋根問祖的天性,從而使得先輩們的遺產(chǎn)可以代代相傳。
    2009-12-12

最新評論

普宁市| 饶河县| 白银市| 区。| 宿迁市| 宜兰市| 拉萨市| 靖宇县| 长沙县| 崇仁县| 青川县| 龙州县| 潞西市| 浦东新区| 长沙市| 淮南市| 潞西市| 莲花县| 浏阳市| 中方县| 平谷区| 彰化县| 莱芜市| 博野县| 奉贤区| 广元市| 泾川县| 项城市| 新丰县| 鲜城| 涡阳县| 封丘县| 通州市| 江阴市| 南宁市| 冷水江市| 陵水| 宽城| 通道| 略阳县| 上蔡县|