15

これらの手順に従いましたが、正しく動作しません。 Chrome のカスタム プロトコル ハンドラ

基本的に、私はカスタムアプリを持っていません。特定の URL で IE を開くためのハンドラを作成したいだけです。

ここに私の登録があります:

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 から ie:www.google.com を開くと、IE を開くように求められますが、開いた URL に「ie:」が含まれているため、無限ループが発生します。

どうすれば修正できますか?

ありがとう

スクリーンショット

4

7 に答える 7

1

いくつかのテストの後、別の戦略に移ります。代わりに、中間バッチ スクリプトをターゲットにしています。そして、バッチはプロトコルと URL を分割し、IE を開きます。

バッチは次のとおりです。

echo %1%
set var=%1
set var=%var:~4,-1%
Start "" "%ProgramFiles%\Internet Explorer\iexplore.exe" %var%
于 2016-11-11T08:43:01.773 に答える
0

レジストリの最後の行を次のようにすると、レジストリの実装はより一般的になります。

@="cmd /C set myvar=%1 & call set myvar=%%myvar:ie:=%% & call start /separate iexplore %%myvar%% & exit"

カスタム スクリプトを作成する必要はありません。

ターゲット URL に複数のクエリ パラメーターを含めることができる場合、最初のパラメーターのみが IE に渡されるという問題に直面する可能性があります (検証するには、IE のアドレス バーを確認してください)。このような場合は、次の回避策を実行できます。エンコード後にターゲット URL を渡す新しい html ファイルを作成し、この HTML を IE で開くだけです。

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>

上記は私のアプリケーションで完全に機能しました。

于 2017-11-05T07:56:34.673 に答える