0

次のスクリプトは Chrome ブラウザーでは機能しません。IE は問題ありません。

opener.document... に変更しましwindow.opener.documentたが、状況は同じです。
ウィンドウを閉じて親ページにデータを転送するのではありません。

function mycoupon() {
    window.open("my_coupon3.jsp?amt=<%=pay_price2%>",
                'coupon_win',
                'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollb‌​ars=yes, resizable=no,width=780,height=540');
}

function sel_coupon(c_id, amt) {
    var tot = opener.document.joinform.Org_totalprice.value;
    tot = String(Number(tot) - Number(amt));
    opener.document.joinform.totalprice.value = tot;
    opener.document.joinform.coupon_id.value = c_id;
    opener.document.joinform.all["tot"].innerHTML = maskNum(opener.document.joinform.Org_totalprice.value) + "USD - " + maskNum(amt) + " USD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color='red'>Total : " + maskNum(tot) + " USD</font></b> ";
    opener.cal_payment_money();
    self.close();
}
4

1 に答える 1

1

グローバル変数を定義し、新しいウィンドウへの参照を割り当ててから、sel_coupon()関数で使用します。

次に例を示します。

var new_window_handle;

function mycoupon() {
    new_window_handle = window.open("my_coupon3.jsp?amt=<%=pay_price2%>",
                'coupon_win',
                'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollb‌​ars=yes, resizable=no,width=780,height=540');
}

function sel_coupon(c_id, amt) {
    var tot = new_window_handle.opener.document.joinform.Org_totalprice.value;
    tot = String(Number(tot) - Number(amt));
    new_window_handle.opener.document.joinform.totalprice.value = tot;
    new_window_handle.opener.document.joinform.coupon_id.value = c_id;
    new_window_handle.opener.document.joinform.all["tot"].innerHTML = maskNum(new_window_handle.opener.document.joinform.Org_totalprice.value) + "USD - " + maskNum(amt) + " USD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color='red'>Total : " + maskNum(tot) + " USD</font></b> ";
    new_window_handle.opener.cal_payment_money();
    self.close();
}

この動作の理由に興味がある場合は、IEがデフォルトwindowが最新のものであると想定しているためです。そのため、IEでコードを実行するとopener、新しいウィンドウでコードが検索されますが、他のブラウザーはもう少し厳密です(この場合はより適切です)。

于 2012-06-13T07:00:25.817 に答える