2

投稿の前に、私がまったく新しい jQuery ユーザーであるという警告を付けておきます。私は経験豊富なプログラマーです。1985 年に IBM System/34 でプログラミングを始めました。Web 開発を行ったのは過去 5 年間だけで、IBM System i を http サーバーとして使用しています。K-12 学校の願書作成 (出席、採点など)。

私は jQuery に恋をしました。これは、プログラミングの世界で出会った詩に最も近いものです。しかし、私はまだそれについて学ぶことがたくさんあります。

とにかく...私の問題に。(ところで:私はStackOverflowサイトとこのサイトの両方で広範囲に検索しましたが、私が抱えている問題への参照を見つけることができません。)

まず第一に、現時点では説明しませんが、私が書いているアプリケーションは Internet Explorer (および IE のみ) で実行する必要があります。

4 つのチェック ボックスを含むフォームで jQuery UI モーダル ダイアログを実装しました。ダイアログは IE10 (および Chrome) で問題なく動作します。ただし、IE10 互換表示または IE9 では、ダイアログのタイトル バーとダイアログの配置が正しく機能しません。何が起こっているかのスクリーンショットを次に示します。

http://i278.photobucket.com/albums/kk110/schryver1960/IE9-jquery-problem.jpg

ご覧のとおり、ダイアログのタイトルがダイアログの「タイトル バー」内に正しく表示されておらず、タイトル バーの「X」も表示されていません。また、ダイアログはウィンドウの中央に配置する必要がありますが、代わりに「左」、「上」に配置されているように見えます。position プロパティを定義しようとしましたが、ダイアログの配置に違いはありません。常にウィンドウの左上隅に配置されます。

画像に表示されているのは次のとおりです。「上部」ウィンドウは、メニュー バー (ホーム、メニュー、アクティブなど) までの「ヘッダー」部分です。一番上のウィンドウは iframe を定義し、その中にアプリケーション ウィンドウがあります。アプリケーション ウィンドウは、「ヘッダー」(列見出しまでのすべて) と「フッター」(「最初からやり直す」ボタンと「変更を送信」ボタンのあるバー) で構成されます。「サブファイル」の行と列は、アプリケーション ウィンドウ内で定義された iframe 内にあります。そのため、確認するには: iframe を使用したトップ ウィンドウ。独自の iframe を持つ、その iframe 内のアプリケーション ウィンドウ。学生コースは、その iframe 内の行を要求します。(それが理にかなっていることを願っています。)

ダイアログの div は、次のように、アプリケーション ウィンドウ (「Maintain Student Course Requests」というタイトル) を出力するページにコーディングされています。

<div id="schOptions" class="ui-widget">
  <table width="270" border="0" cellpadding="2" cellspacing="0">
        <tr valign="middle">
              <td height="22" width="10">&nbsp;</td>
              <td width="220" class="stdLabel"</td>
              <td width="20" align="center"><input name="PFILL" type="checkbox" id="PFILL" value="Y"></td>
              <td width="10">&nbsp;</td>
        </tr>
        <tr valign="middle">
              <td height="22">&nbsp;</td>
              <td class="stdLabel">Use Alternate Match Groups?</td>
              <td align="center"><input type="checkbox" name="PMGN" id="PMGN" value="Y"></td>
              <td>&nbsp;</td>
        </tr>
        <tr valign="middle">
              <td height="22">&nbsp;</td>
              <td class="stdLabel">Schedule Study Hall?</td>
              <td align="center"><input type="checkbox" name="PSTUDY" id="PSTUDY" value="Y"></td>
              <td>&nbsp;</td>
        </tr>
        <tr valign="middle">
              <td height="22">&nbsp;</td>
              <td class="stdLabel">Reset Previous Requests?</td>
              <td align="center"><input type="checkbox" name="PRESET" id="PRESET" value="Y"></td>
              <td>&nbsp;</td>
        </tr>
  </table>

ダイアログを初期化するコードは次のとおりです。

    <script type="text/javascript" language="javascript">
/*====================
 * jQuery Ready Shell
 *====================*/
$(document).ready(function() {



/*=====================================
 * Initialize Scheduler Options Dialog
 *=====================================*/
$('#schOptions').dialog({
       autoOpen: false,
       title: "Scheduler Options",
       modal: true, 
       buttons: [{
         text: "Cancel",
         click: function() { 
      // Close dialog
         $(this).dialog("close");
        } // End "click" event function
       }, // End "Cancel" button definition
       {
         text: "Process",
         click: function() {
      // Process scheduler
         processScheduler();
      // Close dialog
         $(this).dialog("close"); 
        } // End "click" event function
       }] // End "Process" button definition
  }); // End #schOptions dialog definition



}); // End Ready Shell

</script>

かなり単純明快なように思えます。そして、すでに述べたように、Chrome と IE10 ではすべて正常に動作しますが、IE10 互換ビューでも IE9 でも動作しません。残念ながら、ユーザーに IE10 にアップデートするように言うことはできません。実際、IE10 がアプリケーションにもたらす他の問題のため、現時点では IE10 を使用することさえできません。したがって、ほとんどのユーザー (1 日の特定の瞬間に数千人いる) は、実際には互換表示で IE10 を使用しています。

何か案は?

ありがとう。

編集して追加:

これは重要かもしれませんが、上記で言及するのを怠りました。Google CDN 経由で .css および .js ライブラリを取得しています。当分の間、「滑らかさ」テーマを使用します (ただし、近いうちにカスタム テーマに移行することは間違いありません)。そのコードは次のとおりです。

    <!-- jQuery Style Sheet (Theme: Smoothness) -->
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css">

<!-- jQuery and jQuery-ui -->
<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>

ちなみに、ダイアログは、ウィンドウの左上隅に表示されるボタンによって開かれます。

関連するコードは次のとおりです。

    <a name="RunScheduler" href="javascript: promptScheduler();" 
      class="buttonLink">Run Scheduler</a>

/*=================================================
 * promptScheduler -- Prompt for Scheduler Options
 *=================================================*/
function promptScheduler() {
      $("#schOptions").dialog("open");
} 

また、ウィンドウの背景領域に対するモーダル ダイアログの「シェーディング」効果や、ダイアログ ウィンドウのその他のスタイル プロパティが機能しません。ダイアログ ウィンドウの配置プロパティを含め、スタイル クラスのセット全体が正しく適用されていないように見えます。問題はなぜですか?一部の .css プロパティが有効になっているようです 。

4

2 に答える 2

1
<!doctype html>

ページの先頭に上記の行を追加するとうまくいきました。

于 2015-08-25T09:12:23.783 に答える
0

これは古い問題であることは知っていますが、答えがなく、同じ問題が発生したので、解決策を追加することにしました。次の doctype を指定しないと、jqueryui ダイアログが IE 互換モードで正しく表示されないことがわかりました。

<!doctype html>

それを追加して、それが機能するかどうかを確認します。

于 2014-09-09T15:49:13.650 に答える