【web】自定义协议Protocol URL
URL Protocol(自定义协议)可以让web页面调用本地exe程序,这个神奇的功能是怎么实现的呢?
URL Protocol
URL Protocol,没错就是标题里所说的自定义协议。这玩意儿大家最常见的比如迅雷、电驴等。我们平时在电影天堂下载电影的时候点击链接浏览器会启动本地迅雷进行下载。
下面是某部电影的下载链接浏览器检查元素后
<a href="thunder://QUFmdHA6Ly95Z2R5ODp5Z2R5OEB5ZzQ1Lm..."/>
这里的"thunder"就是url protocol。
chrome打开一个IE
往注册表注册
下面我们通过在chrome上打开一个IE,来演示用法
首先创建一个test.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\openIE]
@="URL:openIE Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\openIE\DefaultIcon]
[HKEY_CLASSES_ROOT\openIE\shell]
[HKEY_CLASSES_ROOT\openIE\shell\open]
[HKEY_CLASSES_ROOT\openIE\shell\open\command]
@="cmd /c set m=%1 & call set m=%%m:openIE:=%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%% & exit"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
点击test.reg,在弹出框中选择是
Windows Registry Editor Version 5.00是注册表工具的版本信息,必须放在首行或文件开头的位置。
HKEY_CLASSES_ROOT下面添加一个openIE树,其中openIE的名称就对应着自定义URL Protocol的名称,在web中调用的时候需要这个名称;
@=“URL:openIE Protocol” 可以是任意字符串,在触发时产生提示信息
如果配置为空"",或直接不配置,则会提示
4.@="cmd /c set m=%1 & call set m=%%m:openIE:=%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%% & exit"
cmd:表示以cmd命令行调用ie,瞬间会有黑色的命令行框出现。
call:批处理语法,和start命令都可以用在这个地方。
形式为
set m=%%m:openIE:=%% : 应该是从后面页面处截取参数信息。比如
取得的值是http://a.com.cn。
C:\\Program Files\\Internet Explorer\\iexplore.exe: IE的安装路径。
%1 :表示携带的参数;后面在html触发时,会传递url给ie,否则,ie会仅打开空白页。
这个参数等价于在ie快捷方式 目标后添加一个url,那么默认页就是这个url。
exit :类似bat批处理中的exit语法,退出cmd。但是如果不加该参数,那么会重复打开一个IE并关闭,造成死循环效果,不知道是何原因。
上面代码貌似可以直接配置成
C:\Program Files\Internet Explorer\iexplore.exe “%1” exit
但是目前出的问题是%1这个参数没生效,老是打开空白页,有待研究。
HTML测试
手动创建一个test.html文件
<html>
<head>
<script type="text/javascript">
function clickRadio() {
window.location.href = "openIE:http://a.com.cn";
}
</script>
</head>
<body>
<input type="button" onclick="clickRadio()" value="Click button" />
</body>
</html>
————————————————
版权声明:本文为CSDN博主「云川之下」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_45406092/article/details/105227147
【web】自定义协议Protocol URL的更多相关文章
- Web自定义协议,BS端启动CS端,
实例 1.准备CS项目,windows窗体应用程序,拖进来一个label控件来接受BS的参数,并显示,右击生成,复制该文件的bin目录下的exe,例如放在以下路径,例如C:\\simu\\下, 2.编 ...
- Google Chrome 自定义协议(PROTOCOL)问题的处理
最近在使用谷歌浏览器的时候遇到了自定义协议(PROTOCOL)的问题,比较折腾,特此记录,希望我浪费生命换来的结果能够帮助读到此文的朋友少浪费一点宝贵的时间! 由于某些原因,电脑里一直没有安装阿里旺旺 ...
- 【Win10 UWP】URI Scheme(二):自定义协议的处理和适用场景
上一篇提到Windows Store协议的使用,其实Windows Store协议仅是系统内建的一种协议规则.我们也可以自己定义一套规范的URI-Scheme,除了可以给其他App调用外,本应用也可以 ...
- 采用自定义协议代替OCX组件
事情起源:公司视频播放一直是采用的嵌入浏览器组件实现视频的预览回放等功能.这种实现方式要求客户使用IE浏览器. 最近上线项目使用Html 5开发,要求IE11.项目中使用了视频播放功能,如果全部升级到 ...
- 使用浏览器自定义协议启动本地程序(.EXE文件)
比如,自定义协议名称为 myapp,要启动的本地程序为 myapp.exe. 1)首先向注册表添加如下内容: Windows Registry Editor Version 5.00 [HKEY_CL ...
- C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- http协议与url简介(转)
一 知识简介 HTTP:(Hypertext transfer protocol)超文本传输协议,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议. URL ...
- 通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- 【转载】Chrome使用自定义协议打开本地程序并运行IE打开网页
部分内容转载自: http://blog.sina.com.cn/s/blog_e2b8213a0102wqby.html 项目中遇到某需求:chorme要运行IE并打开网页.解决方案之一就是通过自定 ...
随机推荐
- HDC2021技术分论坛:DevEco Testing,新增分布式测试功能
作者:lixiao,华为终端软件测试首席架构师:mindelong,华为终端软件测试工程师 HarmonyOS自诞生以来,致力于提供全场景智慧解决方案,打造分布式流转.多设备协同的分布式体验.全新解决 ...
- 重学c#系列——什么是性能[外篇性能篇一]
前言 简单写一下性能的简介. 正文 什么是性能,很多时候有一个问题,那就很多人喜欢说.这个服务有很多访问,我们需要这样设计. 这是一个无法验证的指标,访问次数是多少? 响应时间是多少. 我把这归纳为自 ...
- leetcode第 181 场周赛
5364. 按既定顺序创建目标数组 给你两个整数数组 nums 和 index.你需要按照以下规则创建目标数组: 目标数组 target 最初为空. 按从左到右的顺序依次读取 nums[i] 和 in ...
- js判断元素内文字是否超出元素宽度,溢出隐藏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- steam社区留言红小作文模板
steam社区留言红小作文模板 Dear steam: Im a steam user which most play csgo.i saw i had be banned in steam comm ...
- [Py] Python 字符串 str 和 字节 bytes 的互转
字节转字符串: st = str(data, encoding = "utf8") print(st) print(type(str)) # <class 'str'> ...
- 将Go开发的代码部署到k8s集群
一.在服务器上编译go程序 1.1 编译go语言程序 # 安装go yum install go -y mkdir /root/test && cd /root/test # 设置代理 ...
- django-rest-framework框架(一)
1.Web开发模式 # web开发模式 #前后端混合开发(前后端不分离):返回的是html的内容,需要写模板 #前后端分离:只专注于写后端接口,返回json,xml格式数据 # xml格式 <x ...
- 一个现代化轻量级的跨平台Redis桌面客户端
大家好,我是 Java陈序员. Redis 作为一款高性能的非关系型数据库,可是深受开发者的喜爱,无论是什么开发,都能看到 Redis 的身影. 今天,给大家介绍一款跨平台的 Redis 客户端连接工 ...
- 记录几十页html生成pdf的历程和坑(已用bookjs-easy解决)(生成、转换、拼接pdf)
懒得看的朋友,先说最终解决办法,主力为 前端依靠插件 bookjs-easy(点击直接跳转官网)并跳转到下面的第三点查看 接下来详细记录下整个试探的方向和历程 项目需求:是生成一个页数达到大几十页的p ...