下記の様なフレームでページを作成していますが「mainframe」のhtmlファイルをjavaを使用して日時で変化させる方法を教えて下さい。スタートを2003/11/1と定義して経過日数が「7」未満なら「mainframe1.html」、「14」未満なら「mainframe2.html」という感じにしたいのですが可能でしょうか??下記のタグに追加する形でご回答頂けると有難いです。<html><head><meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”><title></title></head><frameset rows=”100,*” cols=”*” frameborder=”NO” border=”0” framespacing=”0”><frame src=”topframe.html” name=”topframe”><frame src=”mainframe1.html” name=”mainframe”><!-- ↑mainframe1.htmlをjavaで自動的に変化させたいです --></frameset><noframes><body></body></noframes></html>

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2003/11/14 07:21:09
  • 終了:--

回答(3件)

id:masaomix No.1

masaomix回答回数1023ベストアンサー獲得回数12003/11/14 11:15:52

ポイント25pt

なかなか回答がつかないようですので、

サンプルページを作ってUPしておきました。

ちょっと構成ファイル数が多くなりますので、

言葉で説明するよりも、現物を見た方が早いでしょう。

参考にしてください。

要点は、javascriptはフレームソースに書いても

うまく動かないことがある、というところなんです。

おそらくご質問の主旨もそこにあると思います。

そこで、経過日数によって表示させるページを変えてやるスクリプトは、

mainframe内に読み込むページの方に記述します。

サンプルでは、index.htmlの中で

<frame src=”mainframe0.html” name=”mainframe”>

としてmainframe0.htmlというページを最初に読み込んでいます。

そしてmainframe0.htmlの中に「経過日数によってページを変える」

スクリプトを記述してやるわけなんですね。

動作の概要はmainframe0.htmlのソースを見ていただけばわかると思いますが、

<META http-equiv=”refresh” content=”0; url=・・・・”>

方式の文字列をjavascriptによって吐き出させて

経過日数に応じたページにジャンプさせている。

ただそれだけの話です。

一応IEとOperaで動作チェックしてあります。

こうして、フレームソースに書いてもうまく動いてくれないjavascriptを

別の所で動かして、見かけ上同じ動作を狙っているわけですね。

一種のコロンブスの卵的発想です(笑)

ちなみに、仕事中に即席で作ったファイルですから、

多少の不都合や、わかりにくい点があるかもしれません。

その際はどうかご勘弁くださいね。

なにかありましたら、いわしで聞いてください。

時々チェックしていますので。

ソースは下の 

 から取得してください。

index.html・・・・・・フレームHTML

mainframe0.html・・・javascriptの入っている最初に読み込まれるページ

mainframe1.html・・・1〜6日目に表示されるページ

mainframe2.html・・・7〜13日目に表示されるページ

mainframe3.html・・・14日目以降に表示されるページ

mainframex.html・・・javascript非対応ブラウザのためのページ

topframe.html・・・・上フレームに読み込まれるページ

の7ファイルで構成されています。

それじゃ、ご健闘をお祈りします(^-^)/

id:kuzuhara

大変、親切且つわかり易い回答を有難う御座いました

2003/11/14 19:34:31
id:andymente No.2

andymente回答回数96ベストアンサー獲得回数02003/11/14 13:17:21

ポイント25pt

<!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Frameset//EN”>

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”>

<meta http-equiv=”Content-Script-Type” content=”text/javascript”>

<title></title>

<script type=”text/javascript”>

<!--

window.onload = function () {

s_date = new Date();//スタート

s_date.setFullYear(2003);//スタート年

s_date.setMonth(10);//スタート月(元の月から -1 する必要がある)

s_date.setDate(1);//スタート日

n_date = new Date();//比較用の今日の日付

past = (n_date-s_date) / (1000 * 60 * 60 * 24);//経過日数

// 7日未満なら mainframe1.html

if (past < 7) window.top.mainframe.location.href = ”mainframe1.html”;

// 14日未満なら mainframe2.html

else if (past < 14)window.top.mainframe.location.href = ”mainframe2.html”;

}

//-->

</script>

</head>

<frameset rows=”50,*” cols=”*” frameborder=”NO” border=”0” framespacing=”0”>

<frame src=”topframe.html” name=”topframe”>

<frame src=”dummy.html” name=”mainframe”>

<noframes>

<body>

</body>

</noframes>

</frameset>

</html>

質問文にある「java」というのは JavaScript のことだと解釈しましたが、違っていたらすみません。

id:Abigail No.3

Abigail回答回数3ベストアンサー獲得回数02003/11/14 14:42:12

ポイント20pt

記載URLにあるJavaScriptを改造して書いてみました。

7未満ならページ1、14未満ならページ2、21未満ならページ3と、いつまでも数字はどんどん増えていきますが。

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”>

<title>

</title>

</head>

<Script Language=”JavaScript”>

<!--

var now = new Date();

var count = new Date(2003,11-1,1);

pass = (Math.floor(((now.getTime() - count.getTime())/(60*60*24*1000))) / 7) + 1;

document.write(’<frameset rows=”100,*” cols=”*” frameborder=”NO” border=”0” framespacing=”0”>’);

document.write(’<frame src=”topframe.html” name=”topframe”>’);

document.write(’<frame src=”mainframe’ + Math.floor(pass) + ’.html” name=”mainframe”>’);

document.write(’</frameset>’);

//-->

</Script>

<noframes>

<body>

</body>

</noframes>

</html>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません