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 回答