0

2 つの aspx ページがあります。それらを Page1 と Page2 と呼びます。Page1 には ListBox と Button があります。Button は Page2 を開きます。Page2 には ListBox と Button があります。Page2 ボタンには、Javascript で記述された OnClientClick メソッドがあります。window.opener を使用して Page1 に戻り、Page2 ListBox でチェックされた項目の値を Page1 の Javascript 関数に渡します。アラートを使用して、Page2 が値を正しく Page1 に戻し、Page1 関数が起動することを確認しました。Web サイトを Windows 7 マシンに公開すると、Page1 関数は正常に機能します。しかし、Windows 2008 Standard サーバーでは、Page1 の ListBox に新しい ListBox アイテムとして値を追加する行 (演習の要点) に到達すると、Javascript が機能しません。エラーはスローされませんが、ListBox に項目が追加されません。その時点以降にスクリプトに挿入されたアラートは発生しません。コードは次のとおりです。

function ProcessFromPopup(dvalue, text) {
  var htmlSelect = document.getElementById('<%=lstSelEmployees.ClientID%>');
  var selectBoxOption = this.document.createElement("option");
  selectBoxOption.value = dvalue;
  selectBoxOption.text = text;
  htmlSelect.add(selectBoxOption, null);
  return true;
}

前述のとおり、「htmlSelect.add」の行は何も実行せず、その行の後に挿入されたアラートは発生しません。その行のすぐ上に挿入されたアラートは発生します。それで、私たちは何を間違っていますか?.Net 4.0 フレームワークを使用しています。また、これは IE9 と 10 で見られる動作ですが、Chrome や Safariでは見られません。Chrome と Safari では、コードは正常に機能します。

4

1 に答える 1

1

私の同僚はちょうどこれを理解しました。IE9 以降では、わずかに異なる構文が必要です。selectBoxOption を作成する代わりに、次のようにします。

htmlSelect.add(new Option(text, dvalue));

ここで重要なのは「新しい」です。時間を無駄にして申し訳ありません。私たちはこれに対して 3 日間頭を悩ませていましたが、私の同僚がついに答えを見つけました。

于 2013-04-30T20:35:08.863 に答える