2014-04-17 29 views
0

我从使用父页面调用一个弹出窗口:如何使用Javascript从父窗口设置子弹出操作元素的值?

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上刷新。

UPDATE 这也没有工作。

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; 
      } 
+0

什么是隐藏类型? – Adil

+0

它只是一个跨度..类隐藏。这是目前可见的。我打算给它后面隐藏的CSS样式 – Arbaaz

+0

@Adil此代码在Chrome上正常工作。但是,当我在IE8上运行这个跨度保持空白。 – Arbaaz

回答

0

如果test.aspx是在浏览器缓存,它可能是您将事件处理程序之前,所以你错过了它(IE是已知的图像加载事件要做到这一点)的onload事件已经发生了。我建议你在附加你的事件处理程序之前检查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; 
} 

作为另一种选择,你可以把这些值到查询参数的网址:

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

,然后有弹出窗口中加载它从它自己的onload处理自己的领域查询字符串中有什么。然后,您可以将代码保留在自包含的弹出窗口中,而不必尝试从另一个窗口修改一个窗口。

如果您不希望用户看到或能够编辑它,可以在弹出窗口中关闭位置栏。

+0

检查我的更新。我尝试了你的代码,但它不起作用 – Arbaaz

+0

@Arbaaz - 我们做的不多,但是如果你不能向我们展示带有问题的实际运行页面URL,则会发出盲目的猜测。实际的调试需要一个运行示例。 – jfriend00

+0

我知道。 那么如果你必须用父窗口的值设置子弹出窗口的跨度的值。你会怎么做? – Arbaaz

相关问题