[PHP、JavaScript]window.open 傳值 part2(opener)

摘要:[PHP、JavaScript]window.open 傳值 part2

恩...發這篇文章的時候我還沒睡...應該要先發發牢騷才是...cheeky

上一篇文章 [PHP、JavaScript]window.open 傳值 我發現在google搜尋..還蠻前面的...

不過應該有不少人會失望,因為只有寫到a.php → b.php而已,而a.php ←→ b.php應該是不少人想找的方法,畢竟活用性高。

總是會遇到的,承蒙咖哩桔子、serene ching兩位大大在回應裡留下了「parent」、「opener」兩個關鍵字,因此減少了不少時間。

由於這次碰到的網頁架構有點特殊(程式碼的部分),因此跳脫一般用From包所有元件的概念,小弟就分享一下a.php ←→ b.php的做法:

首先,我們定義兩個網頁,父網頁我們稱他a.php,子網頁我們稱他b.php。

父網站有一個元件的值要傳到子網站,小弟用Get的做法傳:


因為有部分的值要從資料庫撈出來,因此有些許的PHP的語法。而在matchingExampleName這個元件裡,我設定了onClick="postPage();",也就是當使用者點選後,會呼叫JavaScript裡的postPage()這個Function。

接下來是postPage()的JavaScript程式碼:


  function postPage( ) {
	var value = document.getElementById('meN').value;
	if( value == "Nature" ) {
	  value = 2;	
	} else {
	  value = 1;
    }
	var page = "matchingExampleList.php?postValues="+value;
     var newWindow = window.open(page, "newWin", "resizable=0,scrollbars=0,width=600,height=400");
	if (window.focus) {
		newWindow.focus()
	}
	return false;
  } 

這個裡面,可以特別注意到,小弟在window.open中的URL動了點手腳,讓他直接傳值到子網頁,接下來就是子網頁囉~

子網頁在列出值的地方,小弟用一個div作為動作的呼叫,其中最重要的為設定div的onclick,讓他可以觸發JavaScript:


onClick="closeWindow( ,'');">

接著,當使用者點選子網頁字串時,會觸發onClick中的closeWindow(  )這個function,再來就是子網頁的傳值囉~


 function closeWindow( ID ,Name ) {
  opener.setValue( Name, ID);
  window.close();
 }

沒錯,opener就是用在這裡,只是小弟把他寫成呼叫父網頁名為setValue的function,而這個function如下:


  function setValue( name, ID ){
    var tbox = document.getElementById('matchingExampleName');
	tbox.value = name;
	var tbox = document.getElementById('matchingID');
	tbox.value = ID;
  }

這樣,就可以完成a.php ←→ b.php的動作了,That's all, enjoy it.

 

Keyword: parent, opener, windows.open, 父子網頁 傳值