2

我创建了一个名为“myapp”的自定义协议,并尝试通过 href 标记将参数传递给它<a href="myapp://E:/file.txt">Click here</a>

myapp 协议如下所述:

[HKEY_CLASSES_ROOT\myapp]
@="\"URL:Alert Protocol\""
"URL Protocol"="\"\""

[HKEY_CLASSES_ROOT\myapp\DefaultIcon]
@="\"C:\\WINDOWS\\System32\\notepad.exe,1\""

[HKEY_CLASSES_ROOT\myapp\shell]

[HKEY_CLASSES_ROOT\myapp\shell\open]

[HKEY_CLASSES_ROOT\myapp\shell\open\command]
@="\"C:\\WINDOWS\\System32\\notepad.exe\" \"%1\""

单击锚链接时,它会引发错误,因为“文件名、目录名或卷标语法不正确”。

我猜通过<a href="myapp:E:/file.txt">标签传递的参数没有被识别。

我不知道如何在这里转义斜杠(/)或任何特殊字符。

请帮我解决这个问题,或者让我知道我是否做错了。

4

2 回答 2

2

问题是你的命令行已经变成

C:\WINDOWS\system32\notepad.exe myapp:E:/file.txt

我敢肯定你期待它是

C:\WINDOWS\system32\notepad.exe E:/file.txt

于 2016-07-29T14:51:05.570 回答
0

你必须做这样的事情来获取参数。在这里,我将 URL 地址作为我们在 myapp 中传递的参数:

var url = document.location.href ;
var arr = url.split("/");
var result = arr[0] + "//" + arr[2]
var uri='myapp://'+result;`
于 2016-01-19T06:11:24.110 回答