locked
ブラウザの閉じるボタンをキャンセルしたい。 RRS feed

  • 質問

  • 損と申します。
    Silverlight4+VS2010+Blend4で開発しております。

    ブラウザの閉じるボタンが押された時に、確認ChildWindowを出して、キャンセルボタンを押されたらブラウザを閉じない、という処理を実装したいと考えております。
    ApplicationクラスのExitイベントでは、「アプリケーションがシャットダウンする直前に発生し、取り消せません。」とあり、キャンセルはできないと理解しております。

    閉じるボタンが押されてもブラウザを閉じないようにする方法について、何か良い方法は無いでしょうか。

    2011年4月29日 2:29

回答

  • アウトオブブラウザの場合は
    App.Current.MainWindow.Closingイベントを使用すると良いでしょう。

    オンブラウザの場合は、
    Silverlightはそもそもページ要素の一部であること、そしてセキュリティ的なことを鑑みると
    Silverlightからページそのものの動作について制御するのは好ましくない、また、できないと思います。

    私はSilverlightがブラウザの閉じる閉じないを制御する方法を知らない(できないんじゃないかと思っています)ので、
    私ならJavascriptを使います。

    ホストページに

      <script type="text/javascript"><!--
        window.onbeforeunload = function (e) {
          return "ページが閉じられようとしてますが、よろしいんですか?";
        }
    //--></script>

    見たいに書くと、ご期待の動作に近くなるかなと思います。

    以上、ご参考になれば幸いです。

    • 回答としてマーク 2011年4月29日 7:12
    2011年4月29日 3:34

すべての返信

  • アウトオブブラウザの場合は
    App.Current.MainWindow.Closingイベントを使用すると良いでしょう。

    オンブラウザの場合は、
    Silverlightはそもそもページ要素の一部であること、そしてセキュリティ的なことを鑑みると
    Silverlightからページそのものの動作について制御するのは好ましくない、また、できないと思います。

    私はSilverlightがブラウザの閉じる閉じないを制御する方法を知らない(できないんじゃないかと思っています)ので、
    私ならJavascriptを使います。

    ホストページに

      <script type="text/javascript"><!--
        window.onbeforeunload = function (e) {
          return "ページが閉じられようとしてますが、よろしいんですか?";
        }
    //--></script>

    見たいに書くと、ご期待の動作に近くなるかなと思います。

    以上、ご参考になれば幸いです。

    • 回答としてマーク 2011年4月29日 7:12
    2011年4月29日 3:34
  • Tetsuakiさん、ご回答有難うございます。

    書き忘れていましたガ、オンブラウザです。

    確かにセキュリティ的なことを考えると閉じるボタンの制御がSilverlightからできるのは問題ありですね。

    Javascriptのonbeforeunloadによる制御は期待する動作にとても近いです。参考になります。

    Javascriptによる制御は他のページも色々と参照してみましたが、ページ遷移で意図せずダイアログが出たりすることもあるため、もう少し調査してみます。

     

    2011年4月29日 7:17