none
IEのウインドウIDの取得方法を教えてください。 RRS feed

  • 質問

  • いつもお世話になっております。

     

    現在APS.NET2.0、IE6/7で開発を行っています。

    クライアントサイドにおいて、IEでCtrl+Nを押した場合に新しいウインドウが(同じ情報で)表示されます。

    元ウインドウと新ウインドウとでポストバックした時に、サーバサイドで違いを判断したいのですが方法がわかりません。

    2つのウインドウの一意なIDなどがサーバサイドで判断できればよいのですが・・・

     

    ご存知の方がいらっしゃいましたらご教授願えますでしょうか。

    よろしくお願い致します。

    2007年12月27日 2:04

回答


  • >DHTMLを利用することで、ブラウザ上での操作をある程度制約することはできる。しかしこの方法は「悪意のない人たちの操作ミスによる誤動作を防ぐ」ためのものであり、悪意のある人たちによる不正操作や捏造データの送信を防げるものではない。

    今回は「悪意のない人たち」を対象したケースなのでCtrl+Nの動作を無効にする方向で行こうと思います。

    クライアントの何かを制御するのではなく、そのようにウィンドウを二つオープンされてもサーバー側で吸収するように設計するのが王道です。クライアントの何かを無効にするのはあくまで「補助扱い」とした方がよいでしょう。

     

     

    2008年1月7日 4:11
  • 上記のご質問は、かなり、気になったので、はじめて、MSDNフォーラムで書き込みさせて頂きます。

    失礼もあるかもしれませんが、ご容赦下さい。

     

    まず、ご質問の結論としては、「できない」というのが、結論です。

     

    理由としては、

     

    ・起動中のブラウザから「新規作成」や「Ctrl+N」で、新しいWindowを立ち上げた場合は、

     IE上では、同一プロセスとみなされます。

     

    ・Session情報もサーバー側で共有される上に、ViewStateもWindow作成元のものを

     そのままコピーした状態で使用されるので、区分けがまったく付かない。

     

    のが理由です。

     

    クライアント側のJavaScriptやDHTMLを使って、「Ctrl + N」の動作を無効にすることもできますが、

    http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp06/entwebapp06_06.html

    にも記載されている通り、

     

    DHTMLを利用することで、ブラウザ上での操作をある程度制約することはできる。しかしこの方法は「悪意のない人たちの操作ミスによる誤動作を防ぐ」ためのものであり、悪意のある人たちによる不正操作や捏造データの送信を防げるものではない。

     

    とあるので、「Ctrl + N」の動作を無効にすることが必ずしも良いとは、言い切れないところもあります。

     

    上記の件を纏めると、現状では、具体的な解決策はないと言えるのが現状です。

    「新規作成」「Ctrl + N」の動作に対して、どのような制限や制約、もしくはJavaScriptやDHTMLで制限していくのかを

    含めて、ご検討し直した方が宜しいかなと思います。

     

    非常に悔しいところではありますが、ご参考になれば幸いです。

    2008年1月5日 4:19

すべての返信

  • 上記のご質問は、かなり、気になったので、はじめて、MSDNフォーラムで書き込みさせて頂きます。

    失礼もあるかもしれませんが、ご容赦下さい。

     

    まず、ご質問の結論としては、「できない」というのが、結論です。

     

    理由としては、

     

    ・起動中のブラウザから「新規作成」や「Ctrl+N」で、新しいWindowを立ち上げた場合は、

     IE上では、同一プロセスとみなされます。

     

    ・Session情報もサーバー側で共有される上に、ViewStateもWindow作成元のものを

     そのままコピーした状態で使用されるので、区分けがまったく付かない。

     

    のが理由です。

     

    クライアント側のJavaScriptやDHTMLを使って、「Ctrl + N」の動作を無効にすることもできますが、

    http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp06/entwebapp06_06.html

    にも記載されている通り、

     

    DHTMLを利用することで、ブラウザ上での操作をある程度制約することはできる。しかしこの方法は「悪意のない人たちの操作ミスによる誤動作を防ぐ」ためのものであり、悪意のある人たちによる不正操作や捏造データの送信を防げるものではない。

     

    とあるので、「Ctrl + N」の動作を無効にすることが必ずしも良いとは、言い切れないところもあります。

     

    上記の件を纏めると、現状では、具体的な解決策はないと言えるのが現状です。

    「新規作成」「Ctrl + N」の動作に対して、どのような制限や制約、もしくはJavaScriptやDHTMLで制限していくのかを

    含めて、ご検討し直した方が宜しいかなと思います。

     

    非常に悔しいところではありますが、ご参考になれば幸いです。

    2008年1月5日 4:19
  • 新年明けましておめでとうございます。

    けろーみお様、親切なご回答ありがとうございます。

     

    >まず、ご質問の結論としては、「できない」というのが、結論です。

    内心、「できない」のかなぁと感じていました。

     

    DHTMLを利用することで、ブラウザ上での操作をある程度制約することはできる。しかしこの方法は「悪意のない人たちの操作ミスによる誤動作を防ぐ」ためのものであり、悪意のある人たちによる不正操作や捏造データの送信を防げるものではない。

    今回は「悪意のない人たち」を対象したケースなのでCtrl+Nの動作を無効にする方向で行こうと思います。

     

    以上
    2008年1月7日 1:04

  • >DHTMLを利用することで、ブラウザ上での操作をある程度制約することはできる。しかしこの方法は「悪意のない人たちの操作ミスによる誤動作を防ぐ」ためのものであり、悪意のある人たちによる不正操作や捏造データの送信を防げるものではない。

    今回は「悪意のない人たち」を対象したケースなのでCtrl+Nの動作を無効にする方向で行こうと思います。

    クライアントの何かを制御するのではなく、そのようにウィンドウを二つオープンされてもサーバー側で吸収するように設計するのが王道です。クライアントの何かを無効にするのはあくまで「補助扱い」とした方がよいでしょう。

     

     

    2008年1月7日 4:11
  • こんにちは。中川俊輔 です。

     

    けろ-みおさん、囚人さん、大変参考になる回答ありがとうございます。

     

    SAKINOさんへ

    問題が解決されたようなので、けろ-みおさん、囚人さんの回答へ回答済みチェックをつけさせていただきました。

    また疑問があればぜひフォーラムをご利用ください!

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    問題解決につながる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    SAKINOさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

     

    2008年1月10日 6:47