我已按照this Stackoverflow thread中的说明在Windows 7中创建自定义协议处理程序,该处理程序将在Internet Explorer中打开任何以“ ie:”为前缀的URL。正如Microsofts post中有关自定义协议处理程序的说明中所述,特殊字符的处理方式存在问题,因此在通过URL传递参数时也会遇到问题。
在linked thread中,Saurabh发表了一篇文章,建议使用正确解析URL的脚本创建本地html文件,然后重定向到此新的更新URL。我还没有得到这个工作。
有效方法:
协议处理程序可以从Internet Explorer中的外部程序打开自定义URL(即:https://www.google.se,即:file:/// C:/ieRedirect.html)。
使用协议打开的本地文件可以启动包含参数的硬编码 URL(不是很有用,请参见下面的代码)
<html>
<head>
<title>
IE Redirect
</title>
<script>
function testOpenURL(){
window.open('https://www.google.se/search?q=stackoverflow', '_self');
}
</script>
</head>
<body onload="testOpenURL()">
</body>
</html>
问题:
是否有办法使Saurabh的变通办法起作用并通过URL传递一个或多个参数?
还有另一种方法可以通过自定义协议处理程序传递参数吗?
任何建议都将受到高度赞赏。您可以在下面找到我的reg文件。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\ie]
"URL Protocol"="\"\""
@="\"URL:IE Protocol\""
[HKEY_CURRENT_USER\Software\Classes\ie\DefaultIcon]
@="\"iexplore.exe,1\""
[HKEY_CURRENT_USER\Software\Classes\ie\shell]
[HKEY_CURRENT_USER\Software\Classes\ie\shell\open]
[HKEY_CURRENT_USER\Software\Classes\ie\shell\open\command]
@="cmd /C set myvar=%1 & call set myvar=%%myvar:ie:=%% & call start /separate iexplore %%myvar%% & exit"
答案 0 :(得分:0)
我也未能修改命令字符串 vaue 上的协议后缀,所以我有一种不同的方法来解决这个问题:
http: //<your.domain>/redirect/index.php
),如下所示:<?php
$url = isset($_GET['url']) ? $_GET['url'] : die('Access denied');
$url = str_replace('ie', 'http', $url);
header('Location: ' . $url);
die();
?>
command
键值设置为 "iexplore.exe" "http://<your.domain>/redirect?url=%1"