Chrome/Edge版本升級(jí)到130后,UrlProtocol絕對(duì)路徑盤符冒號(hào)丟失

1. 問題描述

web項(xiàng)目中,有一個(gè)小功能是點(diǎn)擊鏈接,需要外調(diào)外部的一個(gè)exe,然后就通過UrlProtocol的方式處理。早期版本的瀏覽器還有,2024.10剛好瀏覽器發(fā)布了130版本,突然發(fā)現(xiàn)傳參的附件路徑失效了。
對(duì)比了下發(fā)現(xiàn)是新版瀏覽器,傳參時(shí)候,把絕對(duì)路徑的盤符冒號(hào)去掉了。(可以看下面2個(gè)截圖)

代碼塊:

<a class="video-trans-tips"  href="[S2WProtocol://C:/Windows/transSilk2Wav-test.mp4](S2WProtocol://C:/Windows/transSilk2Wav-test.mp4)
">點(diǎn)擊調(diào)用播放器播放</a>
舊版本瀏覽器
edge130版本

2. 問題分析

測(cè)試了很多的很多種路徑方式(測(cè)試代碼見后面),發(fā)現(xiàn)S2WProtocol是個(gè)協(xié)議名稱,相當(dāng)于http,所以后面的S2WProtocol:\\格式也需要遵守鏈接規(guī)范。(在瀏覽器地址欄輸入http://C:aaa/bbb,會(huì)發(fā)現(xiàn)盤符冒號(hào)也是丟失的。)

各種路徑方式的情況:

3. 解決方案

既然要遵守鏈接規(guī)則,那就和普通鏈接一樣通過查詢參數(shù)方式帶入?yún)?shù)。

S2WProtocol://動(dòng)作名?參數(shù)key=參數(shù)value
舉例:
S2WProtocol://play?path=C:aa/bbb.mp4

這種方式下,exe應(yīng)用程序接受到的參數(shù)是S2WProtocol://play/?path=C:aa/bbb.mp4,會(huì)在問號(hào)?前面多一個(gè)正斜桿/,原因未知。exe開發(fā)同事需要關(guān)注這點(diǎn)。

測(cè)試代碼:

<html>
<head></head>
<body>
    <a  href="S2WProtocol://C:/Windows/transSilk2Wav-test.mp4">S2WProtocol://C:/Windows/transSilk2Wav-test.mp4</a>
    <p>舊版本控制臺(tái)打印:Launched external handler for 's2wprotocol://C:/Windows/transSilk2Wav-test.mp4'。能識(shí)別。</p>
    <p>新版本控制臺(tái)打?。篖aunched external handler for 's2wprotocol://C/Windows/transSilk2Wav-test.mp4'。丟失盤符冒號(hào)。</p>

    <hr>
    <a  href="S2WProtocol://transSilk2Wav-test.mp4">S2WProtocol://transSilk2Wav-test.mp4</a>
    <p>新舊版本都識(shí)別不了該路徑</p>


    <hr>
    <a  href="S2WProtocol://C:\Windows\transSilk2Wav-test.mp4">S2WProtocol://C:\Windows\transSilk2Wav-test.mp4</a>
    <p>舊版本能識(shí)別;新版本會(huì)跳轉(zhuǎn)到“about:blank#blocked”</p>



    <hr>
    <a  href="S2WProtocol://C:\\Windows\\transSilk2Wav-test.mp4">S2WProtocol://C:\\Windows\\transSilk2Wav-test.mp4</a>
    <p>舊版本能識(shí)別;新版本會(huì)跳轉(zhuǎn)到“about:blank#blocked”</p>


    <hr>
    <a  href="S2WProtocol://C://Windows//transSilk2Wav-test.mp4">S2WProtocol://C://Windows//transSilk2Wav-test.mp4</a>
    <p>舊版本能識(shí)別;新版本會(huì)丟失盤符冒號(hào)</p>


    <hr>
    <a  href="S2WProtocol:C:/Windows/transSilk2Wav-test.mp4">S2WProtocol:C:/Windows/transSilk2Wav-test.mp4</a>
    <p>去掉S2WProtocol:后面的雙斜桿之后,新版本就不會(huì)丟失盤符冒號(hào)了。</p>


    <hr>
    <a  href="S2WProtocol:C:/Windows//D:transSilk2Wav-test.mp4">S2WProtocol:C:/Windows//D:transSilk2Wav-test.mp4</a>
    <p>在后面字符串拆入盤符冒號(hào),新版本不會(huì)丟失盤符冒號(hào)。</p>


    <hr>
    <a  href="S2WProtocol:///C:/Windows/transSilk2Wav-test.mp4">S2WProtocol:///C:/Windows/transSilk2Wav-test.mp4</a>
    <p>S2WProtocol:后面是三個(gè)正斜桿,新版本也不會(huì)丟失盤符冒號(hào)。</p>

    <hr>
    <a  href="S2WProtocol://play?path=C:/Windows/transSilk2Wav-test.mp4">S2WProtocol://play?path=C:/Windows/transSilk2Wav-test.mp4</a>
    <p>做成這種鏈接方式的可以~</p>

    <hr>
    <a  href="S2WProtocol://path=C:/Windows/transSilk2Wav-test.mp4">S2WProtocol://path=C:/Windows/transSilk2Wav-test.mp4</a>
    <p>新版本會(huì)丟失盤符冒號(hào)</p>
</body>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容