如何使用Javascript从父窗口设置子pop-op元素的值

How to set value of child pop op elements from parent window using Javascript?

本文关键字:pop-op 元素 设置 窗口 何使用 Javascript      更新时间:2023-09-26

我正在使用从父页面调用弹出窗口

var childWindow = open('test1.aspx', '1397127848655', 'resizable=no,width=700,height=500');

然后,我尝试使用这个childWindow对象设置从父窗口弹出的两个跨度的值。

 childWindow.onload = function () {
alert('this msg does not shows up when run on IE8');
                var hidden1 = childWindow.document.getElementById('hidden1');
                var hidden2 = childWindow.document.getElementById('hidden2');
                hidden1.innerHTML = rowindex;
                hidden2.innerHTML = controlname;
            };

只要我使用chrome,这个代码就可以正常工作。但它拒绝在IE8上工作。也没有控制台错误。

我尝试删除childWindow.onload = function () { },但随后页面会在chrome和IE8上进行某种刷新。

更新这也不起作用。

   function CallPopUp(rowindex,controlname ) {
            function popupLoad() {
                alert('this msg does not shows up when run on IE8');
                var hidden1 = childWindow.document.getElementById('hidden1');
                var hidden2 = childWindow.document.getElementById('hidden2');
                hidden1.innerHTML = rowindex;
                hidden2.innerHTML = controlname;
            }
            var childWindow = open('test1.aspx', '1397127848655', 'resizable=no,width=700,height=500');
            if (childWindow.document.readyState === "complete") {
                popupLoad();
            } else {
                childWindow.onload = popupLoad;
            }

如果test.aspx在浏览器缓存中,则可能在附加事件处理程序之前onload事件已经发生,因此您错过了它(众所周知,IE会对图像加载事件执行此操作)。我建议您在附加事件处理程序之前检查document.readyState

function popupLoad() {
    alert('this msg does not shows up when run on IE8');
    var hidden1 = childWindow.document.getElementById('hidden1');
    var hidden2 = childWindow.document.getElementById('hidden2');
    hidden1.innerHTML = rowindex;
    hidden2.innerHTML = controlname;
}
var childWindow = open('test1.aspx', '1397127848655', 'resizable=no,width=700,height=500');
if (childWindow.document.readyState === "complete") {
    popupLoad();
} else {
    childWindow.onload = popupLoad;
}

作为另一个选项,您可以将值放入URL的查询参数中:

`"test1.aspx?hidden1=" + rowindex + "&hidden2=" + controlname` 

然后让弹出窗口从查询字符串中的onload处理程序加载自己的字段。然后,你可以保持弹出窗口中的代码是独立的,你不必试图从另一个窗口修改一个窗口。

如果你不想让用户看到或编辑它,你可以关闭弹出窗口中的位置栏。