使用params打开IE的自定义浏览器协议

问题描述 投票:0回答:1

我需要实现类似于这个答案https://stackoverflow.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>

并更改了reg脚本:

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脚本里面的问题,但无法猜测应该改变什么才能传递参数并多次点击链接。

windows internet-explorer cmd custom-protocol
1个回答
0
投票

找不到修改脚本以接受'&'的好方法。但作为一种解决方法,我建议您可以对网址进行编码,并将“&”更改为“%26”,链接如下:

<a href="openie:https://www.google.com/?word=abc%26word2=abc2">Google2</a>

然后,在目标页面中,您可以解码网址并将'%26'更改为'&',然后拆分字符串并获取参数。

更多细节请参考HTML URL Encoding

© www.soinside.com 2019 - 2024. All rights reserved.