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

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

新規登録して質問してみよう
ただいま回答率
85.37%
ASP.NET

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

Q&A

解決済

1回答

7238閲覧

C#にjavascriptを埋め込みウインドウを閉じたい

yuzuu

総合スコア4

ASP.NET

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

0グッド

0クリップ

投稿2020/07/04 18:31

前提・実現したいこと

勉強としてASP.Netを使用してWebアプリを作成中です。フォーム上に閉じるボタンを用意していますが、これをC#にjavascriptを埋め込み、ボタンを押したとき閉じるようにしたいです。
下のようにコードを書きましたが、ウインドウが閉じることはありませんでした。

該当のソースコード

protected void Button1_Click(object sender, EventArgs e) //終了 { System.Text.StringBuilder script = new System.Text.StringBuilder(); script.Append("<script language='javascript'>\n"); script.Append("window.close();\n"); script.Append("</script>\n"); // JavaScriptを登録 ClientScript.RegisterClientScriptBlock(this.GetType(), "CloseWindow", script.ToString()); }

補足情報(FW/ツールのバージョンなど)

ASP.NET C# VisualStudio2019 .NetFramework4.7.2

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/07/04 23:58

ブラウザは何でしょう?
guest

回答1

0

ベストアンサー

私の質問のコメント、

ブラウザは何でしょう?

に返事がないのですが、多分、Chrome とかを使っていて、ブラウザのセキュリティ対策で window.close() というスクリプトが無視されているのだと思います。

IE11 なら以下のようなダイアログが表示されるはずです。

イメージ説明

MDN の記事によると "このメソッドが許可されるのは、window.open() メソッドを用いたスクリプトにより開かれたウィンドウに対する呼び出しのみです" とのことです。

window.close
https://developer.mozilla.org/ja/docs/Web/API/Window/close

なので、質問に書いてあるようなことは、昔はともかく今はできないと思った方がよさそうです。

【追記】

本来やりたいことが別にあって、このスレッドの話はそのやりたいことを実現するために質問者さんが考えた手段に過ぎず、やりたいことを実現するのに手段は問わないということであれば、やりたいことのシナリオ・詳細を書いてもらった方が良いと思います。

投稿2020/07/05 01:02

編集2020/07/05 01:23
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yuzuu

2020/07/05 02:31

返答がおそくなってしまいました。申し訳ありません。 ブラウザはMicrosoft Edgeです。特にダイアログもなく閉じることができない状態です。 functionでcloseを記述しOnClientClickに設定したときは閉じます。 というのも、GridViewのCommandfieldに選択ボタンがあり、何も選択していない時は閉じるボタンで閉じることができるのに、選択中は閉じることができないので、サーバー側からも同じように閉じることができるのかなと思った次第です。
yuzuu

2020/07/05 02:35

ただ、、いただいたURL先を見ると、やはりできそうにないですよね。
退会済みユーザー

退会済みユーザー

2020/07/05 03:19 編集

> ブラウザはMicrosoft Edgeです。 Edge もダメですね。特に最新の Edge は Chrome と同じエンジンを使っているようで、同じ動きになるようです。 > functionでcloseを記述しOnClientClickに設定したときは閉じます。 というのも、GridViewのCommandfieldに選択ボタンがあり、何も選択していない時は閉じるボタンで閉じることができるのに、 どのように試したのか分かりませんが、とにかく window.close() メソッドについては紹介した MDN の記事のとおりです。なので、質問に書いてあるようなことはできないと思った方がよさそうです。
退会済みユーザー

退会済みユーザー

2020/07/05 03:18 編集

ただ、MDN の記事に書いてあるように window.open() メソッドで開かれたウィンドウには window.close() メソッドは有効ですので、そういうケースでは使えると思います。 例えば、以下の記事のコードがそれですが、Chrome, Edge, IE, Opera の現時点での最新版で問題なく動きます。 window.opener を使って PostBack http://surferonwww.info/BlogEngine/post/2010/11/04/PostBack-operation-using-window-opener.aspx
yuzuu

2020/07/05 03:13

そうですね、openでは使えるとのことなのでそこは覚えていたいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問