2009-04-02 32 views
0

"window.showModalDialog(..."はvbscript関数(ページはaspxと表示されています)で発生するモーダルダイアログを表示しています)ウィンドウのサイズを変更するには、これは当然のことですが、これはうまくいきませんでしたので、msgboxだけを表示したスクリプトを登録しようとしました。showModalDialogはClientScript.RegisterStartupScriptと干渉しませんか?

コードは(onLoadイベントハンドラ内)のようになります。これが機能して「こんにちは」というメッセージボックスを表示する必要がありますように私に

if (!this.ClientScript.IsStartupScriptRegistered(typeof(MyPageClassName), "hello")) 
     { 
      this.ClientScript.RegisterStartupScript(typeof(MyPageClassName), "hello", 
        @"<script language=vbscript> 
         sub fnWindowOnLoad() 
          MsgBox ""hello"" 
         end sub 
         <script>", false); 
     } 
     if (!this.ClientScript.IsStartupScriptRegistered(typeof(MyPageClassName), "hello")) 
     { 
      throw new Exception("Failed to load script"); 
     } 

はそれが見えページの負荷は(私が持っているときに、ウィンドウのfnWindowOnLに設定されたonloadイベントオード)。しかし何が起こるかは、何も例外ではなく、警告でもありません。私はtypeof呼び出しで考えることができるあらゆるタイプを試しました。何も動作していないようです。私が考えることができるのは、ダイアログがモーダルなので、ClientScript.RegisterStartupScriptは正しく動作しません。しかし、それは私には意味をなさない。

MsgBoxの「hello」呼び出しをスクリプトブロックに直接挿入すると、アラートが表示されるため、可能です。しかし、コードの中のいくつかの引数を修正する必要があるので、私が知る限りRegisterStartupScriptを使用する必要があります。

答えて

0

解決策は、隠しフィールドから値を読み取り、ダイアログのサイズを変更するスクリプトを作成することでした。値はPage_Loadに設定されています。 RegisterStartupScriptを使用したことは決してうまくいかず、RegisterClientScriptもどちらもしなかったので、私はモーダルダイアログとRegisterXxxがうまくいかないと確信しています。 window.dialogHeightを使用する必要があります。& vbscriptのwindow.dialogWidth。

0

window.showModalDialog()ではなくwindow.open()でウィンドウを開こうとしましたか?私は、showModalDialog()とRegisterStartupScriptの間の非互換性についてウェブ上でいくつかの投稿を見てきました。

showModalDialog()はIEのみのメソッドなので、とにかくお勧めしません。値を返すので便利だと分かっていますが、この機能をシミュレートするさまざまな方法があります。

編集: showModalDialog()のもう1つの問題は、IEが結果をキャッシュすることが多いことです。つまり、一度ダイアログを呼び出すと、サイズを変更しないで、次に別の時間を実行すると、2回目に最初にキャッシュされたダイアログが表示される可能性があります。これを回避する方法は、最後にユニークなクエリーストリングを追加することです。 MyDialog.aspx?q = 320934(ランダムに生成された、またはサーバーチックに基づいて生成された)と同様。

+0

私の上司は私がshowModalDialogを取り除くと幸せにならないでしょう。それには他にも多くの変更が含まれています。私は本当に戻ってくる価値が必要です。私たちはIEのみの会社であり、何年も続くだろうと思う。 – jcollum

+0

@jcollum上記の私の編集を参照してください。それは私が見たもう一つの問題です。 – Keltex

+0

あなたが正しいです。しかし、もし私がここで正しいことを修正し始めるなら、私は最初から始めなければならないでしょう。私はその上にバイインをしていません – jcollum

関連する問題