尝试从打开此对话框的父页面中定义的对话框执行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
函数?
答案 0 :(得分:0)
由我自己解决。
问题是我的对话框不是真正的对话框,但它是由 window.open
创建并显示的pag_aperta = window.open(pagina, 'popUp_', DialParam);
所以要执行父页面中定义的 rifiutaSingolo(),我不能使用它:
onclick="parent.rifiutaSingolo()"
因为它与对话框有关但我必须使用它:
onclick="window.opener.rifiutaSingolo()"
与窗口相关