- 締切済み
インクルードしているheadの中に記述するには?
htmlのヘッダーを関数化して全画面でインクルードしています。 ある画面でだけ、ちょっとしたjavascriptの記述をヘッダー内に記述したいのですが、どうしたらいいでしょうか? 現状ではヘッダー関数の中でJSを外部ファイルで読み込んでいますが、JSのスクリプトでwindow.onloadなどを使う場合、すべてのページに該当してしまいよろしくありません。 うまい方法がありましたらご教授宜しくお願いします。 またheadの終わりからbodyの始まる間にscriptを書いても問題はないのでしょうか? 動作的にはエラーは通知されませんでしたが。 原則的にはheadの中だと思うので。 <html> <head> </head> ●ここにjavascriptを記述 <body> ・・・ 【環境】 php5
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
- shimix
- ベストアンサー率54% (865/1590)
>例えばcommon.phpというファイルがあって、その中にhtml用のユーザー関数を作ります。 それが「ヘッダー関数」なのですね。わかりました(というか説明がないとわかりません・・)。 function htmlheader($title) を function htmlheader($title, $usejs = false) とかに変えてしまうというのはナシなんでしょうか?JavaScriptが必要なページだけ第二引数でtrueを渡せばいいと思いますけど。
- yambejp
- ベストアンサー率51% (3827/7415)
headとbodyの間というのありえないでしょう。 headかbodyの中のどちらかに書いてください。 cssの外部ファイル化と違いscriptはbodyに書いても問題ないです。
- shimix
- ベストアンサー率54% (865/1590)
header()関数ではなく、htmlのヘッダ部を外部ファイルからincludeもしくはreadfileで出力している・・ということですよね?それは普通ヘッダ「関数」とは呼びません。なるべく標準的な用語でお願いします。 file()で読み込んでおいて、自前で(foreachで回して)printする・・という手もあります。そうすれば途中に挿入するかどうかチェックできます。というか「所定の文字列を変数で置換して」出力すれば、変数へのセットで出力を変えられますね。 タイトル部分などは書き替えて出力しませんか?全部ページでヘッダが(タイトルまでも)同じというのは逆に妙だと思いますけど。
補足
ご回答ありがとうございます。 つまりですね 例えばcommon.phpというファイルがあって、その中にhtml用のユーザー関数を作ります。 <?php function htmlheader($title){ ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <title><?=$title?></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> …省略 </head> <?php } ?> で、各ページで読み込みます。 ■test.php <?php require 'common.php'; echo htmlheader('タイトル'); ?> <body> 内容 </body> 上記のような場合でtest.phpファイルの中にjavascriptを埋め込みたいと。 しかもbodyの中じゃなくて、<head></head>の中に。 そういう場合、なにかいい方法はないのでしょうか?ってことなんですけど…。 さらに例えば、このページだけaaa.jsファイルを読み込ませたいとか。 そのときにcommon.php側で分岐処理させるのではなく、test.php側でブラウザのheadに出力させることの出来る関数とかないのかなって…思ったところなんですけど。 htmlheader($title)で最後の</head>を書かないで、各ページで </head> <body> で始まったほうがいいのかなとも思えてきました。
補足
>headとbodyの間というのありえないでしょう。 なんとなくそう思いますが、ではどうしてありえないのですか? 具体的に、ここに準拠していないとか、こういう問題があるからありえないなどのご回答をいただけると筋道の通った回答となるのですが。