第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用history.goBack()時,如何確保只返回應用程序內(nèi)的頁面?

使用history.goBack()時,如何確保只返回應用程序內(nèi)的頁面?

POPMUISE 2023-07-29 16:25:05
在 Reactjs 中,我正在編寫一個函數(shù)組件,其中包含一個如下所示的按鈕:<button onClick = {() =>history.goBack()}>   Go Back  </button>我需要確保單擊按鈕時,僅當上一頁位于應用程序內(nèi)時才返回,我該如何實現(xiàn)?非常感謝您的幫助!
查看完整描述

3 回答

?
不負相思意

TA貢獻1777條經(jīng)驗 獲得超10個贊

document.referrer返回用戶上次訪問的頁面的 URL(除非您的頁面是直接使用 URL 欄訪問的)


使用此的示例:


function goBack() {

    if(document.referrer.includes(window.location.host)){

        window.history.back();

    }

}

該函數(shù)includes只是根據(jù)一個字符串是否包含另一個字符串返回一個布爾值。


window.location.host是頁面的當前主機名和任何關聯(lián)的端口。


查看完整回答
反對 回復 2023-07-29
?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

我想不出任何很好的解決方案來解決你的問題 - 這可能是不可能的(或者我只是知道得不夠)。

但是,有一種解決方法在您的應用程序中實施可能會困難,也可能不困難,具體取決于多種因素。歷史記錄 API允許您進行已經(jīng)發(fā)現(xiàn)的瀏覽器導航。訣竅是利用它在瀏覽器歷史記錄中的每個點保存狀態(tài)的能力。

如果每當用戶導航到應用程序的不同部分時,您都使用History.pushState()實現(xiàn)導航,并向每個導航添加類似的狀態(tài){allowBackNav:true},那么每當用戶單擊向后導航按鈕時,您都可以確保allowBackNav在允許該操作之前,將歷史記錄的狀態(tài)設置為 true。除了用戶第一次加載您的應用程序時之外,歷史上的每個時刻都會設置此狀態(tài)。

如果用戶通過受控的history.pushState() 之外的任何其他方式(例如通過鏈接)導航到應用程序的一部分,則該系統(tǒng)將會崩潰。

這是一個完整的工作示例。

<html>

? <body>

? ? <button id="back" onClick="back()" disabled>Back</button>

? ? <button onClick="choose('A')">Option A</button>

? ? <button onClick="choose('B')">Option B</button>

? ? <button onClick="choose('C')">Option C</button>

? ? <p id="option"></p>

? ? <script>

window.back = function() {

? history.back()

}


window.choose = function(option) {

? history.pushState({allowBackNav: true}, '', `?option=${option}`)

? updateUI()

}


function updateUI() {

? const currentOption = new URL(window.location.href).searchParams.get('option')

? document.getElementById('option').innerText = currentOption ? `Selected: ${currentOption}` : ''

? document.getElementById('back').disabled = !(history.state && history.state.allowBackNav)

}

updateUI()

window.addEventListener('popstate', event => {

? updateUI()

})

? ? </script>

? </body>

</html>


查看完整回答
反對 回復 2023-07-29
?
拉丁的傳說

TA貢獻1789條經(jīng)驗 獲得超8個贊

每次路由更改時,您都可以將 URL 保存在窗口對象的歷史狀態(tài)中。在你的情況下,如果你只保存主機名而不是完整的 URL 就可以了。像這樣 :


window.history.pushState({ prevUrl: window.location.host }, null, "/new/path/in/your/app");

您可以編寫一個自定義函數(shù),該函數(shù)將在單擊時調(diào)用:


goBack(){

? if(window.history.state && window.history.state.prevUrl){

? ? let url = window.history.state.prevUrl;

? ? //check if the url matches with the your applications host name

? ? ?if(url == 'hostName'){

? ? ? ? ?history.goBack();

? ? ?}

? ? }

}

查看完整回答
反對 回復 2023-07-29
  • 3 回答
  • 0 關注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號