質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

736閲覧

jQuery:メッセージボックスの選択に合わせて自動でブラウザを閉じたい

t.okuno

総合スコア10

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

1クリップ

投稿2020/05/19 06:24

編集2020/05/20 04:51

Azure仮想マシンなどが絡んだポータルサイトをASP.NET MVCで作成しています。
その中でAzure仮想マシンへのリモート接続の際に、パスワード入力の手間を省くため

  1. メインの入力フォームから別ブラウザでサブページを開き、パスワードなどのデータを受け渡す
  2. jQueryのwindow.openを用いてクライアント側のローカルexeを起動
  3. サブページからさらにローカルexeにデータを受け渡してRDPファイルを作成して起動
  4. サブページはローカル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で「はい」を押したというイベントハンドラが掴めれば実装できるのではないかと思っていますが、そのイベントハンドラの掴み方がよく分かりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/20 03:01 編集

> 「アプリを切り替えますか? "Microsoft Edge"は"{ローカルexe名}"を開こうとしています」 それは何なのですか? ブラウザによるポップアップブロックの警告? 問題は「いいえ」をクリック(ポップアップを拒否?)した場合、そのままの状態を保持したいが、親画面まで閉じてしまうということですか? 他人には分からない「Azure仮想マシン」とか「ローカルexe」を質問に持ち出さずもっと単純に、例えば、Visual Studio のテンプレートで MVC5 アプリを作りその Home/Index と Home/About を使って、誰でも問題を再現できるような形で説明できませんか?
t.okuno

2020/05/20 04:54

質問内容を簡略化したものを追記いたしました。 失礼いたしました。
退会済みユーザー

退会済みユーザー

2020/05/20 06:07

上のコメントの質問(コメント前半の ? マークがついているもの)に答えてください。 > あまり詳しくないのでよくわかっていません ということなら詳しい人に聞いて答えてください。質問者さんが作ったアプリではなさそうで、詳しい人が作ったのだろうと想像してます。 というか、詳しくない質問者さんがここで聞くより、詳しい人と相談して解決すべき問題だと思うのですが。もしくは詳しい人が直接ここに出てきて聞くとか・・・
guest

回答1

0

自己解決

調べてみたところ、質問フォームに掲載した青いメッセージボックスは、URIスキームというものを用いて既定のアプリを起動する際に、ユーザーが実際にアプリを切り替えようとしているかどうかを確認するためにOSが表示しているダイアログとのことでした。
参照サイト:https://docs.microsoft.com/ja-jp/windows/uwp/launch-resume/launch-default-app

加えてLaunchUriAsyncというメソッド(https://docs.microsoft.com/ja-jp/uwp/api/windows.system.launcher.launchuriasync?view=winrt-18362)を用いてアプリの呼び出しが成功したかどうかを確認できるそうなので、これを使ってウィンドウを閉じるか閉じないかを確認することにしました。

大変失礼いたしました。

投稿2020/05/20 08:32

t.okuno

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問