WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:フレームの配置(表示)以外のことをやらせたい

0:[投稿] 彪子 [2005/09/20 01:31 ][環境:IE6,WIN98 Apache]

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

<!-- ここから -->

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

<!-- ここまで -->

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


1:[回答] まと [2005/09/20 22:37 ]

できます。


2:[質問] 彪子 [2005/09/22 12:39 ]

まと様、ありがとうございます。
JavaScript の仕様には、
 | SCRIPT要素は、HTML文書にスクリプトを組み込むもので、
 | HEAD要素あるいは BODY要素に、何回出現してもよい。
とありますので、問題になっているフレーム表示をともなう 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』のプレビューでもやはり同様のエラーになることがわかりました。
やはり何か定義のしかたに問題があるのでしょうか?以上読んでいただいて、おわかりになることがありましたら教えていただければ幸いです。どうかよろしくお願いいたします。


3:[回答] gun [2005/09/22 14:31 ]

ご提示のスクリプト内では、document.write で、
<layer>や<div>や<img>などのタグを書いているので、
単純に<HEAD>に移すだけでは動かなくなります。

「<BODY>でも<HEAD>でも動く」といっても、
モノによる(構造次第) というところでしょうか。


4:[回答] miz [2005/09/22 14:43 ]

>doc_width = document.body.clientWidth;でエラー
document.body.clientWidth は body が読み込まれた後でないと取得できません。
よってこのスクリプトは、bodyタグに挟むか、またはonloadイベントで実行開始するように変更が必要です。
または、姑息的だけど、この行の前にdocument.write('moji');で何らかの文字がページに表示されていれば、実行されます。
フレーム内かどうかには、関係有りません。


5:[回答] miz [URL] [2005/09/22 15:02 ]

あっと、netscape4では、onloadでdocument.writeは出来ないんだった。
クロスブラウザ対策としては、やはり、このスクリプトはbodyタグに挟むのが妥当かな。
ご呈示のスクリプトは、私もnetscape7、mozillaで実行できるように改造したことがあるのだけど、bodyに挟む方式は踏襲してやってました。


6:[質問] 彪子 [2005/09/22 23:21 ]

gun 様、miz 様ありがとうございます。
miz 様が書いてくださった説明を何度か読ませていただきましたが、私の読解力では理解することが出来ませんでした。『bodyタグに挟む』というのは、下記の 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>

<!-- ここまで -->

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


7:[回答] miz [2005/09/24 00:09 ]

snow01.htmで提示されたスクリプトは、framesetを記述しているファイルに書いてもうまく動作しません。

>フレーム内かどうかには、関係有りません。
これは、フレーム無しの状態か、フレーム内のmenu.htmlまたは、tourokusakuhin4.htmlファイルのbodyタグより後ろに記述するかのどちらかという意味です。


8:[完了] 彪子 [2005/09/24 09:27 ]

miz 様ありがとうございます。
委細承知いたしました。
質問させていただいた中にはトンチンカンな部分もあったかと思いますが、後になって考えてみると、『なるほど』と頷(うなづ)くことができました。
miz 様始め、私のわがままで稚拙な質問にご親切に答えていただいた皆さんにお礼申し上げます。ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World