繁体   English   中英

为什么从对话框中尝试使用parent.rifiutaSingolo()执行在父页面中定义的功能时得到此错误消息?

[英]Why I obtain this error message when from a dialog I try to perform a function defined into the parent page using parent.rifiutaSingolo()?

我在尝试从定义到打开此对话框的父页面的对话框中执行JavaScript功能时遇到以下问题。

所以我有这种情况:

我有一个名为autorizzaFattura2父页面页面,该页面是通过此JavaScript打开对话框的页面(当用户单击链接时,打开对话框):

function openDialog2(pagina,larghezza,lunghezza,tipo) {

//alert("INTO openDialog2(), pagina: " + pagina, " larghezza: " + larghezza + " lunghezza: " + lunghezza + " tipo: " + tipo);

larghezza = '950px';
lunghezza = '470px';
lunghezza2 = '530px';
if (tipo == 3) {
    larghezza = '950px';
    lunghezza = '470px';
    lunghezza2 = '530px';
}

if (tipo == 9) {
    larghezza = '950px';
    lunghezza = '470px';
    lunghezza2 = '530px';
}
        unitaLargo = larghezza.substring(larghezza.length - 2, larghezza.length)
        unitaLungo = lunghezza.substring(lunghezza.length - 2, lunghezza.length)

        var puntiLarghezza = 0;
        var puntiLunghezza = 0;

        if (unitaLargo != "px") {
            //per default è in percentuale
            Wlargo = (screen.width * larghezza) / 100;
            puntiLarghezza = Wlargo;
            Wlargo = Wlargo + "px";
        } else {
            Wlargo = larghezza
            puntiLarghezza = larghezza.substring(0, larghezza.length - 2);
        }

        if (unitaLungo != "px") {
            //per default è in percentuale
            Wlungo = (screen.height * lunghezza) / 100;
            puntiLunghezza = Wlungo;
            Wlungo = Wlungo + "px";
        } else {
            Wlungo = lunghezza
            puntiLunghezza = lunghezza.substring(0, lunghezza.length - 2);
        }

        var l = (screen.width / 2) - (puntiLarghezza / 2);
        var t = (screen.height / 2) - (puntiLunghezza / 2);

        DialParam = 'width=' + Wlargo + ',height=' + Wlungo + ',toolbar=no,directories=no,';
        DialParam = DialParam + 'toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no,scrollbars=yes,resizable=no';

        //alert("pagina: " + pagina);
        pag_aperta = window.open(pagina, 'popUp_', DialParam);
        pag_aperta.moveTo(l, t);
        pag_aperta.focus();
}

因此,如您所见,弹出窗口由window.open()语句打开,该语句为:

pag_aperta = window.open(pagina, 'popUp_', DialParam);

好的,在此父页面( autorizzaFattura2 )中,还定义了rifiutaSingolo() JavaScript函数,该函数是:

function rifiutaSingolo() {

        alert("Into rifiutaSingolo()");

        chiudi();
        $('#myRejectNote').css("visibility", "visible");
        $('#rifiutaTable').css("visibility", "visible");
        $("#dialogReject").dialog("open");
        document.getElementById('myRejectNote').focus();
    }

OK,在由openDialog2()函数打开的对话框中,单击此按钮必须执行定义到父页面中的rifiutaSingolo()函数:

<input style="color: #FFFFFF; font: bold 10px tahoma,arial,helvetica,sans-serif" class="bottone" readonly="readonly" type="button" value="Rifiuta" onclick="parent.rifiutaSingolo()">

我尝试使用parent以这种方式执行此操作: onclick="parent.rifiutaSingolo()"但它不起作用,并且rifiutaSingolo()函数未执行,并且在FireBug控制台中,我rifiutaSingolo()此错误消息(当我点击按钮):

TypeError: parent.rifiutaSingolo is not a function

为什么? 我想念什么? 如何解决此问题并正确执行父页面中定义的rifiutaSingolo()函数?

由我自己解决。

问题是我的对话框不是真正的对话框,而是由window.open创建和显示的

pag_aperta = window.open(pagina, 'popUp_', DialParam);

因此,要执行定义到父页面中的rifiutaSingolo(),我不能使用以下命令:

onclick="parent.rifiutaSingolo()"

因为它与对话框有关,但是我必须使用它:

onclick="window.opener.rifiutaSingolo()"

与窗口有关的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM