Chrome/Edge版本升级到130后,UrlProtocol绝对路径盘符冒号丢失

1. 问题描述

web项目中,有一个小功能是点击链接,需要外调外部的一个exe,然后就通过UrlProtocol的方式处理。早期版本的浏览器还有,2024.10刚好浏览器发布了130版本,突然发现传参的附件路径失效了。
对比了下发现是新版浏览器,传参时候,把绝对路径的盘符冒号去掉了。(可以看下面2个截图)

代码块:

<a class="video-trans-tips"  href="[S2WProtocol://C:/Windows/transSilk2Wav-test.mp4](S2WProtocol://C:/Windows/transSilk2Wav-test.mp4)
">点击调用播放器播放</a>
旧版本浏览器
edge130版本

2. 问题分析

测试了很多的很多种路径方式(测试代码见后面),发现S2WProtocol是个协议名称,相当于http,所以后面的S2WProtocol:\\格式也需要遵守链接规范。(在浏览器地址栏输入http://C:aaa/bbb,会发现盘符冒号也是丢失的。)

各种路径方式的情况:

3. 解决方案

既然要遵守链接规则,那就和普通链接一样通过查询参数方式带入参数。

S2WProtocol://动作名?参数key=参数value
举例:
S2WProtocol://play?path=C:aa/bbb.mp4

这种方式下,exe应用程序接受到的参数是S2WProtocol://play/?path=C:aa/bbb.mp4,会在问号?前面多一个正斜杆/原因未知。exe开发同事需要关注这点。

测试代码:

<html>
<head></head>
<body>
    <a  href="S2WProtocol://C:/Windows/transSilk2Wav-test.mp4">S2WProtocol://C:/Windows/transSilk2Wav-test.mp4</a>
    <p>旧版本控制台打印:Launched external handler for 's2wprotocol://C:/Windows/transSilk2Wav-test.mp4'。能识别。</p>
    <p>新版本控制台打印:Launched external handler for 's2wprotocol://C/Windows/transSilk2Wav-test.mp4'。丢失盘符冒号。</p>

    <hr>
    <a  href="S2WProtocol://transSilk2Wav-test.mp4">S2WProtocol://transSilk2Wav-test.mp4</a>
    <p>新旧版本都识别不了该路径</p>


    <hr>
    <a  href="S2WProtocol://C:\Windows\transSilk2Wav-test.mp4">S2WProtocol://C:\Windows\transSilk2Wav-test.mp4</a>
    <p>旧版本能识别;新版本会跳转到“about:blank#blocked”</p>



    <hr>
    <a  href="S2WProtocol://C:\\Windows\\transSilk2Wav-test.mp4">S2WProtocol://C:\\Windows\\transSilk2Wav-test.mp4</a>
    <p>旧版本能识别;新版本会跳转到“about:blank#blocked”</p>


    <hr>
    <a  href="S2WProtocol://C://Windows//transSilk2Wav-test.mp4">S2WProtocol://C://Windows//transSilk2Wav-test.mp4</a>
    <p>旧版本能识别;新版本会丢失盘符冒号</p>


    <hr>
    <a  href="S2WProtocol:C:/Windows/transSilk2Wav-test.mp4">S2WProtocol:C:/Windows/transSilk2Wav-test.mp4</a>
    <p>去掉S2WProtocol:后面的双斜杆之后,新版本就不会丢失盘符冒号了。</p>


    <hr>
    <a  href="S2WProtocol:C:/Windows//D:transSilk2Wav-test.mp4">S2WProtocol:C:/Windows//D:transSilk2Wav-test.mp4</a>
    <p>在后面字符串拆入盘符冒号,新版本不会丢失盘符冒号。</p>


    <hr>
    <a  href="S2WProtocol:///C:/Windows/transSilk2Wav-test.mp4">S2WProtocol:///C:/Windows/transSilk2Wav-test.mp4</a>
    <p>S2WProtocol:后面是三个正斜杆,新版本也不会丢失盘符冒号。</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>新版本会丢失盘符冒号</p>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容