フレームの配置(表示)以外のこともやりたい – プログラミング – Home

フレームの配置(表示)以外のこともやり...
 
通知
すべてクリア

[解決済] フレームの配置(表示)以外のこともやりたい


彪子
 彪子
(@彪子)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

いつもお世話になっております。
フレームを表示する HTMLソースで下記のようなものがあります。

<!-- ここから -->

<FRAMESET
cols=161,*><FRAME name=left src=menu.html><FRAME name=right
src=/tourokusakuhin4.html>
<NOFRAMES>
<BODY>
<P>このページを表示するには、フレームをサポートしているブラウザが必要です。</P>
</BODY>
</NOFRAMES></FRAMESET>

<!-- ここまで -->

このように、フレームをサポートしているブラウザでは通常フレームの配置(表示)のみが行わ
れるようです。フレームの配置をやるとともに、これ以外に JavaScript の実行等を行わせる
ことはできないでしょうか。


引用未解決
トピックタグ
Web
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

仕様には、

| SCRIPT要素は、HTML文書にスクリプトを組み込むもので、
| HEAD要素あるいは BODY要素に、何回出現してもよい。

とありますね。

こんな風でよいのでは。

<HEAD>
<SCRIPT>
ご自由に
</SCRIPT>
</HEAD>
<FRAMESET ...>
省略
</FRAMESET>


返信引用
彪子
 彪子
(@彪子)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

dairygoods 様、いつもありがとうございます。
<BODY> に記述したスクリプトをそのまま <HEAD> に移し換えてもいいと伺って(この点につい
てはまったくわかっていませんでした。不勉強で申しわけありません)、問題になっているフレ
ーム表示をともなう html ファイルの <HEAD> にJavaScript を記述してやってみましたがう
まくいきませんでした。それで、フレームをともなわないファイルの <BODY> にJavaScript
を記述した、
(1) http://cgi.niji.jp/home/ashizuka/postertown/snow01.htm
を用意し、JavaScript が正常に実行されることを確認しました。次に、このスクリプトをそっ
くり <HEAD> に移した
(2) http://cgi.niji.jp/home/ashizuka/postertown/snow02.htm
を作成しましたが、これは JavaScript は実行されませんでした。
(2) を『ホームページビルダー2001』でプレビューすると、

ライン 23
文字  5
エラー オブジェクトがありません

というメッセージが表示されます。『ライン 23』が『 doc_width =
document.body.clientWidth;』の行であることは確認できています。『doc_width』が 5 カ
ラム目から始まっていますが、この変数は 17行目に定義されています。

別のスクリプトで試したときも、同様に <BODY> だとうまくいくのに <HEAD> では実行され
ず、『ホームページビルダー2001』のプレビューでもやはり同様のエラーになることがわかり
ました。
やはり何か定義のしかたに問題があるのでしょうか?以上読んでいただいて、おわかりになるこ
とがありましたら教えていただければ幸いです。どうかよろしくお願いいたします。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

<HEAD> の解析中は、
まだ <BODY> を解析してないですから、
document.body もまだ存在しません。

body にアクセスしたければ、その部分を関数にして、
<BODY> の onLoad から呼び出してやるなどする必要があります。

さらに、フレームを使う場合、フレームのロードが終わっても、
各フレーム内のドキュメントのロードが終わっているとは限らない
という点にも注意する必要があるでしょう。


返信引用
彪子
 彪子
(@彪子)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

ありがとうございます。
dairygoods 様が書いてくださった説明を何度か読ませていただきましたが、私の読解力では理
解することが出来ませんでした。『body にアクセスしたければ、その部分を関数にして、
<BODY> の onLoad から呼び出してやるなどする必要があります。』というのは、下記の
html ソースに JavaScript をどのように挿入すればいいのでしょうか。

<!-- ここから -->

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN>
<HTML><HEAD>
<TITLE>サンプル</TITLE>
<META http-equiv=Content-Type content=text/html; charset=Shift_JIS>
<META content=IBM HomePage Builder 2001 V5.0.0 for Windows name=GENERATOR>
<META http-equiv=Content-Style-Type content=text/css></HEAD>
<FRAMESET
cols=161,*><FRAME name=left src=menu.html><FRAME name=right
src=tourokusakuhin4.html>
<NOFRAMES>
<BODY>
<P>このページを表示するには、フレームをサポートしているブラウザが必要です。</P>
</BODY>
</NOFRAMES></FRAMESET>
</HTML>

<!-- ここまで -->

私の力不足で理解できないのは申し訳ありませんが、何とぞよろしくお願いいたします。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

次の二つの違いは分かりますでしょうか?

<html>
<head>
<script>
alert(document.body); // ファイル解析の途中で実行される
</script>
</head>
<body>
...
</body>
</html>

<html>
<head>
<script>
function myfunc() {
alert(document.body); // ファイル全体を解析後に実行される
}
</script>
</head>
<body onload=myfunc()>
...
</body>
</html>


返信引用
彪子
 彪子
(@彪子)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

dairygoods 様
お世話になっております。

> 次の二つの違いは分かりますでしょうか?

二つの違いについては頭ではわかっているつもりですが、実際に

(3) http://cgi.niji.jp/home/ashizuka/postertown/snow03.htm

を作成しましたがエラーが出ます。すみませんが、このコーディングのやり方に間違いがあるで
しょうか。
また、フレームを使ったページの場合、 onload=myfunc() をどこに挿入すればいいのでし
ょうか。
何度も申し訳ありませんがどうかよろしくお願いいたします。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

ドキュメントが完成した後で document.write() すると、
全体が書き換わってしまいます。

<html>
<body>ABC<script>document.write(DEF)</script></body>
</html>

<html>
<head>
<script>
function writetest() {
document.write(DEF); // ABCの後ろに追加されるわけではない
}
</script>
</head>
<body onload=writetest()>ABC</body>
</html>

そうすると、定義した変数や関数や何もかもなくなってしまうということです。
なので、どうしてもこの方法で推し進めたいなら、
function writetest() {
document.write(<html><head><script> function(以下略));
}
のように、HTML全部を書き直さなければなりません。

フレームの場合 frameset の onload に書けますが、
その場合 body は存在しないので、彪子さんが作っているような
body に何か書くプログラムでは無意味でしょう。


返信引用
彪子
 彪子
(@彪子)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

dairygoods 様
毎々ありがとうございます。ご返事が遅れて申し訳ありません。
dairygoods 様には、前回『偽のURLを表示させるには』でも大変ご親切に教えていただいてあ
りがとうございました。また機会がありましたらよろしくお願いいたします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました