摘要:[PHP、JavaScript]window.open 傳值 part2
恩...發這篇文章的時候我還沒睡...應該要先發發牢騷才是...
上一篇文章 [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, 父子網頁 傳值