1. 程式人生 > >從子頁面獲取父頁面的值

從子頁面獲取父頁面的值

這裡頁面間的傳值有很多種方法,前兩種方法是頁面直接傳值後不能同時保持2個頁面都還存在,後面兩種方法是從父頁面彈出子頁面2個視窗都能保持:

1、使用超連結通過URL傳值或是Response.Redirect方法從一個頁面到另一個頁面

將要傳的資料寫在URL後面跟隨傳值,這樣資料不安全而且傳值長度也有範圍,大資料無法傳

2、用Server.transfer(URL)方法實現頁面的跳轉

Server.transfer()與Response.Redirect最大的不同就是,Response.Redirect實際上就像在位址列裡面重新輸入了要跳轉頁面的地址,所以他是不儲存之前頁面的資訊的。但是Server.transfer()完全不同,Server.transfer()就是像是在伺服器端重新顯示你要轉到的頁面,但此前頁面的資訊都還儲存在伺服器。因此在新的頁面上你仍可以得到之前頁面的值。


3、使用window.open(url)開啟一個子視窗

想要獲得父視窗的物件很簡單,使用window.opener.varName就能獲取父視窗的物件

注意:這樣只能獲取父頁面中的全域性變數,但是區域性變數就不行了

還可以使用window.opener.document.getElementById("id");

4、使用window.showModalDialog()方法彈出一個子視窗

想要獲得父視窗中的值,這裡我們就要在showModalDialog()中傳入window引數,然後在子視窗中獲取這個引數,這樣就可以操作父視窗中的資料了。

父視窗中的js程式碼:

<script type="text/javascript">

   function  fwindow(){

window.showModalDialog("son.jsp",window);//son.jsp就是我們的子視窗頁面

}

</script>

子視窗中的程式碼:

<script  type="text/javascript">

function swindwo(){

var data = window.parent.document.getElementById("test").value;  //test是父視窗中的一個元件id

var data =window.opener.document.getElementById("test").value;   //另外的寫法

alert(data);

}

</script>

注意:使用這種方法,在不同瀏覽器對上面的語句支援不同,在使用window.parent.document.getElementById或者window.opener.document.getElementById,在IE中都會報錯,在火狐中是不會報錯的,但是火狐只能通過window.opener取到物件

當然你也可以通過在window.showModalDialog()中的URL後面直接傳值,從而使子頁面獲取到父頁面物件,寫法如同普通url傳值。