Azure仮想マシンなどが絡んだポータルサイトをASP.NET MVCで作成しています。
その中でAzure仮想マシンへのリモート接続の際に、パスワード入力の手間を省くため
- メインの入力フォームから別ブラウザでサブページを開き、パスワードなどのデータを受け渡す
- jQueryのwindow.openを用いてクライアント側のローカルexeを起動
- サブページからさらにローカルexeにデータを受け渡してRDPファイルを作成して起動
- サブページはローカルexeの起動が終わったら自動でブラウザを閉じる
という仕様でソースを組んでいます。このうち1~3までは既に完成しているのですが、4の「自動でブラウザを閉じる」処理ができません。
現状のソースはこのような感じです(重要となるJavaScript部分のみ抜粋)。
HTML
1<script> 2 var options; 3 // ローカルexeを起動させるためのアドレス 4 var address = '{ローカルexe名}://home/?server_path=' + @ViewBag.ServerPath 5 + '&user_name=' + @ViewBag.UserName + '&password=' + @ViewBag.Password; 6 7 // ローカルexeを起動 8 window.open(address, '_self', options); 9 10 // ブラウザが開いてから30秒後にブラウザを閉じる 11 setTimeout(function () { 12 window.open('about:blank', '_self').close(); 13 }, 30000); 14</script>
上記のwindow.open(address, ...);
のところでは、例えばEdgeの場合「アプリを切り替えますか? "Microsoft Edge"は"{ローカルexe名}"を開こうとしています」というメッセージが表示されます。ここで「はい」を押した場合のみしばらく経って自動でブラウザが閉じられ、「いいえ」を押した場合ブラウザも閉じずそのまま、という処理にしたいです。現在のソースのままだと何もしなくとも30秒後には先程のメッセージも含めすべてが閉じられてしまいます。
ちなみにVisual Studio 2017のASP.NET Webアプリケーション(.NET Framework)を使用しています。方法をご存じの方がいらっしゃいましたら、ご教示の程よろしくお願いいたします。
追記
「質問内容が分かりづらい」とのご指摘をいただきましたので、デフォルトのASP.NET MVCプロジェクトを用いて説明したいと思います。
Home/Indexページのボタンを押して、別ウィンドウでHome/Aboutページが開きます。直後にHome/Aboutページのウィンドウに以下のようなメッセージが表示されます(画像はMicrosoft Edgeでプロジェクトを動かした場合のメッセージ)。
※おそらくEdgeが出しているポップアップのメッセージだと思うのですが、あまり詳しくないのでよくわかっていません。またこちらの事情によりメッセージを一部黒塗りしていますが、今回の質問には関係ないので気にしないでください。
このメッセージの「はい」を押したときにだけ、Home/Aboutページのウィンドウが自動で閉じるようにしたいのです。JavaScriptで「はい」を押したというイベントハンドラが掴めれば実装できるのではないかと思っていますが、そのイベントハンドラの掴み方がよく分かりません。
回答1件
あなたの回答
tips
プレビュー