2014-04-17 61 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

相關問題