自定义浏览器协议以使用参数打开 IE
Posted
技术标签:
【中文标题】自定义浏览器协议以使用参数打开 IE【英文标题】:Custom browser protocol to open IE with params 【发布时间】:2019-09-15 13:08:37 【问题描述】:我需要实现类似于这个答案的东西 https://***.com/a/41749105/1004374 但我有几个问题。 我稍微改变了它,以便能够将参数传递到 url:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>openie</title>
</head>
<body>
<h1>Hello world!</h1>
<a href="openie:https://www.google.com/">Google1</a>
<a href="openie:https://www.google.com/?word=abc&word2=abc2">Google2</a>
</body>
</html>
并更改了注册脚本:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\openie]
"URL Protocol"="\"\""
@="\"URL:OPENIE Protocol\""
[HKEY_CURRENT_USER\Software\Classes\openie\DefaultIcon]
@="\"explorer.exe,1\""
[HKEY_CURRENT_USER\Software\Classes\openie\shell]
[HKEY_CURRENT_USER\Software\Classes\openie\shell\open]
[HKEY_CURRENT_USER\Software\Classes\openie\shell\open\command]
@="cmd /k set myvar= & call set myvar=\"%1\" & call set myvar=%%myvar:openie:=%% & call \"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe\" %%myvar%% & exit /B"
唯一的更新是屏蔽 %1 参数:
myvar=\"%1\
这是用 & 传递参数所必需的。否则将复制 url 直到第一个&符号:
openie:https://www.google.com/?word=abc&word2=abc2
第一次点击链接时一切正常。当 IE 已经打开时,url 被错误地复制,其中包含编码引号,并在开头自动添加 http:
http://%22https//www.google.com/?word=abc&word2=abc2"
我意识到里面的 cmd 脚本存在这个问题,但无法猜测应该更改什么才能传递参数并多次单击链接。
【问题讨论】:
【参考方案1】:没有找到修改脚本以接受“&”的好方法。但作为一种解决方法,我建议您可以对 url 进行编码,并将 '&' 更改为 '%26',链接如下:
<a href="openie:https://www.google.com/?word=abc%26word2=abc2">Google2</a>
然后,在目标页面中,你可以解码url并将'%26'更改为'&',然后,拆分字符串并获取参数。
更多详情,请参考HTML URL Encoding。
【讨论】:
谢谢,但您的回答仅适用于目标应用程序在您的控制之下的情况,而不是我的情况以上是关于自定义浏览器协议以使用参数打开 IE的主要内容,如果未能解决你的问题,请参考以下文章