通过自定义协议处理程序(Chrome 到 IE)通过 URL 传递参数

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

我已按照 此 Stackoverflow 线程 中的说明在 Windows 7 中创建自定义协议处理程序,该处理程序将在 Internet Explorer 中打开任何前缀为“ie:”的 URL。正如关于自定义协议处理程序的Microsoft 帖子中所解释的,存在如何处理特殊字符的问题,因此会出现通过 URL 传递参数的问题。

链接的线程中,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 传递一个或多个参数?

  • 还有另一种方法可以通过自定义协议处理程序传递参数吗?

任何建议都将受到高度赞赏。您可以在下面找到我的注册表文件。

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"

javascript html batch-file cmd registry
1个回答
0
投票

我也未能修改命令字符串值的协议后缀,因此我有一种不同的方法来解决此问题:

在您的服务器上创建一个页面(例如

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"

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