HTMLの復習からやり直し
時間が空いてしまったが、PHPのプログラムの学習を再開。
会社で、参考にししているWebの画面のソースを確認していたら、非同期で通信しているのか、と思っていた機能が、実はフレームを使っていたことがわかり、さっそく使い方を確認してみる。
HTMLのフレームなんて、ここ何年も使っていなかったので、HTMLの学習からやり直し。
HTMLの確認は簡単だったが、JavaScript を使う方法は、ちょっと調べないとやれなかった。
試し作った画面の仕様はこんなの。
親画面のボタンを押すと、フレームで作ってある子画面が出る。この子画面は、上が検索用、下が親画面にデータを送るJavaScript 付きの画面。下画面で、リンクまたはボタンを押すと、親画面のINPUTタグにテキストを書き込む。この機能は、子画面の中の下画面に設定した JavaScript で実行する。
この JavaScript は、こんなの。
これを作るのに、Javascript の window をいろいろ調べてみて、もやと思って設定したところうまくいった。
function 関数名( 値 ) {
if( !parent.opener || parent.opener.close ) {
window.alert("メインウィンドウがありません");
} else {
parent.opener.document.フレーム.テキスト.value = 値;
top.close();
}
}
「parent.opener.document 」は、今の画面の親(フレーム)を開いた画面(こっちが本当の親)という意味。
また、画面を閉じる場合は、今の画面の親(フレーム)ごと閉じるようにするため、top.close としている。
一応、これで予定の動作ができたので、フレームの下の画面を、DBを検索して Javascript を貼り付けた画面を出せばOK。
さっそく CakePHP でDBを検索させて、JavaScript で親の<INPUT>タグに貼り付けるコードを作成して試してみる。
ちょっと時間がかかったものの、うまくいきました。
こんな感じで、フレームを作って、フレーム内に CakePHP からの出力を表示するようにしたところ、予定どおりの動作ができました。
KEIYAKU_FRAME