为什么我从对话框中尝试使用parent.rifiutaSingolo()执行定义到父页面的函数时获取此错误消息?

时间:2015-05-15 09:26:22

标签: javascript jquery html css jsp

尝试从打开此对话框的父页面中定义的对话框执行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();
    }

好的,在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()功能未执行且{{1}我获取此错误消息(当我单击按钮时):

FireBug

为什么呢?我错过了什么?如何解决此问题并正确执行父页面中定义的TypeError: parent.rifiutaSingolo is not a function 函数?

1 个答案:

答案 0 :(得分:0)

由我自己解决。

问题是我的对话框不是真正的对话框,但它是由 window.open

创建并显示的
pag_aperta = window.open(pagina, 'popUp_', DialParam);

所以要执行父页面中定义的 rifiutaSingolo(),我不能使用它:

onclick="parent.rifiutaSingolo()"

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

onclick="window.opener.rifiutaSingolo()"

与窗口相关