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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 <head> 中使用 window.history.replaceState() 是否安全?

在 <head> 中使用 window.history.replaceState() 是否安全?

當(dāng)年話下 2023-07-14 15:49:02
我想刪除當(dāng)用戶登錄我的網(wǎng)站時(shí)Facebook 添加到 URL 的#_=_偽影。我正在使用這個(gè)腳本:if (window.location.hash === '#_=_') {? ? const uri = window.location.toString();? ? const withNoHash = uri.substring(0, uri.indexOf('#'));? ? window.history.replaceState({}, document.title, withNoHash);}我希望腳本盡快啟動(dòng),所以我把它放在了<head>Chrome 和 Firefox 上,它似乎工作得很好。window.history當(dāng)腳本執(zhí)行時(shí) API 已就緒,這是否標(biāo)準(zhǔn)化<head>?(document.title順便說(shuō)一句)。
查看完整描述

4 回答

?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊

關(guān)于主題window


標(biāo)準(zhǔn)瀏覽器實(shí)現(xiàn)一個(gè)Window接口,通過(guò)該接口window向文檔中的 JavaScript 公開全局屬性。Window即使打開新選項(xiàng)卡,后續(xù)導(dǎo)航也會(huì)在同一文檔中加載不同的文檔。因此,您使用的屬性(例如window.location文檔window.history中的屬性)將在用戶(從 Facebook)導(dǎo)航到您的頁(yè)面之前出現(xiàn)Window,因此可用于您的文檔。


這也適用于當(dāng)您直接在新的瀏覽器窗口中加載頁(yè)面時(shí) - 文檔將有權(quán)訪問(wèn)該window屬性。更多信息請(qǐng)Window參見(jiàn)window:https://developer.mozilla.org/en-US/docs/Web/API/Window


如果您擔(dān)心頁(yè)面被非標(biāo)準(zhǔn)瀏覽器加載,或者由于某種原因, window 屬性history和location屬性被覆蓋,您可以在調(diào)用它們之前檢查它們是否可用:


if (window && window.location && window.location.hash) {

// safely use window.location.hash here

}

但即便如此,客戶端的瀏覽器也會(huì)抑制該錯(cuò)誤。


document.title關(guān)于使用with的主題replaceState()


規(guī)范將其指定為字符串,因此根據(jù)設(shè)計(jì),如果未設(shè)置,它將返回空字符串。在文檔完全加載之前,Mozilla 不會(huì)發(fā)出關(guān)于使用它的警告。更多信息請(qǐng)參見(jiàn)https://developer.mozilla.org/en-US/docs/Web/API/Document/title


以下是我使用不帶標(biāo)簽的 HTML 頁(yè)面進(jìn)行的一些快速測(cè)試,看看是否確實(shí)如此<title>。

<html>

    <head>

        <script>

            console.log("title", document.title)

            window.history.replaceState({}, document.title, "newHMTL.page");

        </script>

    </head>

    <body>

    Testing

    </body>

</html>

沒(méi)有預(yù)期的錯(cuò)誤或警告。


關(guān)于主題replaceState


該規(guī)范指出,大多數(shù)瀏覽器都會(huì)忽略您傳遞給的title/參數(shù):document.titlereplaceState


目前大多數(shù)瀏覽器都會(huì)忽略此參數(shù),盡管將來(lái)可能會(huì)使用它。在此處傳遞空字符串應(yīng)該可以安全地防止將來(lái)對(duì)該方法進(jìn)行更改。或者,您可以傳遞州的簡(jiǎn)短名稱。


因此,當(dāng)我準(zhǔn)備好頁(yè)面時(shí),進(jìn)行一些更快速的測(cè)試。將標(biāo)題設(shè)置為null; undefined; and a function;然后將其傳遞給replaceState不會(huì)更改歷史記錄中的標(biāo)題,也不會(huì)在有標(biāo)簽<title>或沒(méi)有標(biāo)簽時(shí)在 Chrome 中引發(fā)錯(cuò)誤。所以 6 次測(cè)試。


<html>

    <!-- <title>title</title> -->

    <head>

    <script>

        let title = () => alert("huh?") //null; //undefined;

        console.log("Title", title);

        window.history.replaceState({}, title, "NewHTML.page");

        //works as expected

    </script>

    </head>

    <body>

    Testing

    </body>

</html>


查看完整回答
反對(duì) 回復(fù) 2023-07-14
?
30秒到達(dá)戰(zhàn)場(chǎng)

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊

是的,它是安全的,因?yàn)?code>window當(dāng)瀏覽器開始解析頭部時(shí),對(duì)象就準(zhǔn)備好了。

瀏覽器創(chuàng)建窗口 > 窗口將文檔對(duì)象加載到自身 > 文檔對(duì)象渲染 DOM > 文檔對(duì)象加載其所有資源 > 窗口對(duì)象觸發(fā) onload 事件

head部分是 DOM api 的一部分,而Document對(duì)象是對(duì)象的屬性window,因此document一旦窗口對(duì)象準(zhǔn)備好,就會(huì)加載該部分。由于它history.replaceState是對(duì)象的一部分window,因此在頭部執(zhí)行任何腳本部分都是安全的。

Window 接口代表一個(gè)包含 DOM 文檔的窗口;document 屬性指向該窗口中加載的 DOM 文檔??梢允褂?document.defaultView 屬性獲取給定文檔的窗口


查看完整回答
反對(duì) 回復(fù) 2023-07-14
?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

阿羅哈)是的,這對(duì)您和您的客戶來(lái)說(shuō)是安全的,因?yàn)榇翱谑且粋€(gè)全局對(duì)象,每個(gè)人都可以在瀏覽器中使用它,并且任何人都可以使用它。并且您的函數(shù)可以由任何人執(zhí)行。在這種情況下,不用擔(dān)心安全問(wèn)題;)



查看完整回答
反對(duì) 回復(fù) 2023-07-14
?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

它非常安全,但如果沒(méi)有監(jiān)聽器,我不會(huì)在開發(fā)中使用它DOMContentLoaded。為了更加安全并考慮到那些使用舊版瀏覽器的人,我建議您添加該監(jiān)聽器,DOMContentLoaded這樣window.onload您就不會(huì)在加載速度較慢的頁(yè)面上遇到任何問(wèn)題。此外,對(duì)于window.historyAPI,由于它是本機(jī)函數(shù),不需要單獨(dú)的功能,因此您可以安全、立即使用它。
TL;DR
添加一個(gè)DOMContentLoaded偵聽器以防萬(wàn)一。

查看完整回答
反對(duì) 回復(fù) 2023-07-14
  • 4 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)