我已经按照这些步骤,它不适合我正常工作。 Custom protocol handler in chrome
基本上,我没有自定义应用程序。我只是想创建一个处理程序与特定的URL打开IE浏览器。
这里是我的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]
@="\"explorer.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]
@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" \"%1\""
它的工作,但...当我打开即:从Chrome中www.google.com,它要求打开IE浏览器,但它保持“即:”在打开的网址...它生成一个无限循环。
我该如何解决呢?
谢谢
保存该脚本internet-explorer-protocol-handler.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]
@="\"explorer.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 /k set myvar=%1 & call set myvar=%%myvar:ie:=%% & call \"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe\" %%myvar%% & exit /B"
然后运行该脚本在注册表中安装密钥。它看起来是这样的:
现在,使用ie:
协议链接将在Internet Explorer中打开。
<a href="ie:https://www.google.com/">Google</a>
一些测试后,我移动到另一个策略。在定位,而不是中间批处理脚本。而该批次分割协议和URL,并打开IE浏览器。
这里是批:
echo %1%
set var=%1
set var=%var:~4,-1%
Start "" "%ProgramFiles%\Internet Explorer\iexplore.exe" %var%
这里是一个要解决的问题的解决方案扩展的URL包含参数和特殊字符的(,%等)
替换这个reg文件的命令:
powershell -windowstyle hidden -command "& {$Url = '%1' ; $Url = $Url -replace 'ie:',''; $IE=new-object -com internetexplorer.application ; $IE.navigate2($Url) ; $IE.visible=$true }"
注册表的实施将是比较通用的,如果你对注册表的最后一行
@="cmd /C set myvar=%1 & call set myvar=%%myvar:ie:=%% & call start /separate iexplore %%myvar%% & exit"
你并不需要创建一个自定义脚本。
在情况下,目标URL可以有超过1个查询参数,你可能会面临只有第一个参数被传递给IE的问题(检查IE地址栏验证)。在这种情况下,你可以去以下解决方法...只需创建一个新的HTML文件传递目标URL编码之后,打开IE浏览器这个HTML。
window.location = "ie:"+<URL to the above HTML>+"?path="+encodeURIComponent(<target URL>);
在HTML文件中,只是重定向到解码的目标URL
<html>
<head>
<title>
IE Redirect
</title>
<script>
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
vars[key] = value;
});
return vars;
}
function openURL(){
window.location.href=decodeURIComponent(getUrlVars()["path"]);
}
</script>
</head>
<body onload="openURL()">
</body>
</html>
以上我的应用程序完美。
以下命令将所有的查询工作PARAMS传递:
CMD / C组MYVAR = “%1” &呼叫建立MYVAR = %% MYVAR:即:= %%&通话开始/单独的 “IEXPLORE.EXE” %% MYVAR %%&出口
以下命令将所有的查询工作PARAMS传递:
CMD / C组MYVAR = “%1” &呼叫建立MYVAR = %% MYVAR:即:= %%&通话开始/单独的 “IEXPLORE.EXE” %% MYVAR %%&出口
我们需要在一个链接中有它的一个符号使用双引号和符号被剪掉后不会在IE11的东西打开。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\ie]
"URL Protocol"=""
@="URL:IE Protocol"
[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 url=\"%1\" & call set url=%%url:ie:=%% & call start iexplore -nosessionmerging -noframemerging %%url%%"
一些重要的注意事项:
%1
。否则多PARAMS网址像example.com?a=1&b=2
将被剥离到example.com?a=1
,则params后&
将被忽略。iexplore
时卸下双引号。如果不从Chrome中删除双引号和打开多个IE窗口,只有第一个IE窗口会得到正确的URL。但随着命令set url=%%url:\"=%%
或set url=%%url:~1,-1%%
去掉引号,不能正常工作。-nosessionmerging
和-noframemerging
到iexplore
。这些都是command-line options来控制IE“合并”的行为。