【500ポイント進呈!】

この質問は【500ポイント進呈!】となっているものと連動していますので、二つの質問を読んでからどちらかに投稿してもう片方にも投稿しましたよということを投稿してください。
Javascript(あるいはActionscript?)に関してなのですが、私はJavascriptに関しての知識がないので、Javascriptに詳しい方々に今から私の述べることをJavascriptで作ってほしいのです。
それはというと、
Flashに関してのことなのですが、
まず、私はトップページにFlashをおきたいと思っています。
トップページに行ったら、Flashが流れますよね。
しかし、毎回トップページに行く度にFlashが流れるのは、迷惑だと思うので、
トップページからサイト内の他のページに行った後に、ブラウザ上の戻るを押したら、Flashを流さないで、いきなり最後の部分までとぶ。
という物を作ってほしいのです。
細かく指定すると、10分以内に戻ってきた場合には、Flashの最後の部分までとんで、
10分以上たった場合には、最初からFlashを流すという設定にしたいです。

これを、参考にしてください。
http://okwave.jp/kotaeru.php3?q=1816611

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/01/14 13:00:22
  • 終了:--

回答(2件)

id:ginpei No.1

ginpei回答回数40ベストアンサー獲得回数02006/01/09 14:31:35

「ウィンドウ幅に合わせて Flash のサイズを縦横比を保ったまま変更する」


これは JavaScript を使わずとも実現できます。

まず Flash なら縦横比を自動的に保ってくれるので、比率の維持は特に処理する必要がありません。

(今のものはそうなっています。昔は知りませんが、多分同じではないかと推測。)


可変サイズは object 要素のサイズに 100% を設定すれば自動的にサイズを決めなおしてくれます。

例えばこうです。

  <object classid=”~” codebase=”~” width=”100%” height=”100%”>

「ウィンドウの外側」でなく「内側」にあわせますが、こういう意味ではないかと推しての回答です。


この際ウィンドウ内部の「隙間」が気になる場合は、body タグに追加してこのようにしてみて下さい。

  <body style=”margin:0px;”>


「10 分以内の再訪問の場合は Flash ムービーの末尾に移動する」


基本的に JavaScript から Flash を直接操作する事はできないようです。

そこで

  「全体」と「最後の部分」の別々の Flash ファイルを作り、

  JavaScript で前回訪問時刻からどちらを表示するか判別する

という代替案を提案します。

提示 URL の『JavaScriptで,Flashを貼り付けるタグと,他の画像を貼り付けるタグを用意しておいて,

戻って来たときは,どちらを表示させるかをJavaScriptで判断させる形です。』と基本は同じです。


なお、たしか Flash は他の sfw ファイルを部品?のように取り込めたと思いますので、

ムービー部分の Flash は全て再生した後に最後の部分を(別ファイルから読み込んで)表示させるように作ると便利ではないかと思います。

このあたり、私は明るくないので具体例などは例示できません。すみません。


ともかく二種類のファイルの用意が可能でしたら、このスクリプトでご希望に添えると思います。


<script type=”text/javascript”>

// Flash のファイル名を設定

var fname = ”全体のファイル”;

var menu = ”最後の部分のファイル”;


// Cookie に訪問時刻を格納し判断

var sep = ”,”; // 区切り子

var now = new Date(); // 現在の時刻

var tmp = document.cookie.split(sep); // Cookie から読み出し、区切り子で切り分ける

for(var i=0; i<tmp.length; i++) tmp[i] = eval(tmp[i]); // 数値型にする

var d = new Date(tmp[0], tmp[1], tmp[2], tmp[3], tmp[4], tmp[5]); // 前回訪問時刻

if((now.getTime()-d.getTime())/1000/60 < 10 ) fname = menu; // 前回より十分以上経過なら処理

document.cookie = now.getFullYear() + sep + now.getMonth() + sep + now.getDate() + sep + now.getHours() + sep + now.getMinutes() + sep + now.getSeconds();


// object 要素書き出し

document.write(’<object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000” codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash....” width=”100%” height=”100%”>’);

document.write(’<param name=”movie” value=”’ + fname + ’”>’);

// document.write(’ここに追加’);

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

</script>

<noscript><p><em>JavaScript が利用できません。</em></p></noscript>


これらをまとめてコピーして、表示したいページのソースに貼り付けて下さい。


ただし、このうち「ムービーファイル」と「最後の部分のファイル」は適切なファイル名に置き換えて下さい。

また「”」「’」はそれぞれ半角の「”」「’」に置換する必要があります。

(WinXP ならメモ帳で、編集→置換が便利です。)


<object> ~ </object> に他の要素などを入れたい場合は、

  // document.write(’ここに追加’);

をコピー・編集して、行頭の「//」を削除して下さい。

id:kabin

Javasvriptが実行できませんと表示されてしまいます。Javascriptをオンにしているのですが、

実行されません。

2006/01/10 20:53:35
id:ginpei No.2

ginpei回答回数40ベストアンサー獲得回数02006/01/13 01:29:51

動きませんか? なんでだろう。

正常に動作するファイル群を ZIP に圧縮してみました。ダウンロードしてみてください。(なおファイルは一月中に削除します。)

(IE の場合画面上部に「セキュリティ保護のため~」が出てきたらそれをクリックして下さい。念のため。)


ZIP の解凍ソフトがない場合は、二番目のリンクから適当なものを試してみて下さい。


それといくつかミスをみつけました。

特に Win + IE 以外では動作しなかったようです。(スクリプト部じゃないんですが。)

過去ログになった時のため訂正しておきます。


<script type=”text/javascript”><!--

// Flash のファイル名を設定

var fname = ”movie.swf”; // ←全体のファイル

var menu = ”menu.swf”; // ←最後の部分のファイル


// UA に適切な height を取得(IE は ”100%” で適切に動作する。Opera はよくわからないのでスクリプトで処理)

function GetHeight()

{

if(window.innerHeight)

return window.innerHeight;

else

return ”100%”;

}


// Cookie に訪問時刻を格納し判断

var sep = ”,”; // 区切り子

var now = new Date(); // 現在の時刻

var tmp;

if(document.cookie != ””) {

tmp = document.cookie.split(sep); // Cookie から読み出し、区切り子で切り分ける

var d = new Date(tmp[0], tmp[1], tmp[2], tmp[3], tmp[4], tmp[5]); // 前回訪問時刻

if((now.getTime()-d.getTime())/1000/60 < 10 ) // 前回より十分以上経過なら処理

fname = menu;

}

document.cookie = (new Array(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds())).join(sep);


// object 要素書き出し

document.write(’<object width=”100%” height=”’ + GetHeight() + ’” classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000” codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash....”>’);

document.write(’<param name=”movie” value=”’ + fname + ’”>’);

document.write(’<embed src=”’ + fname + ’” width=”100%” height=”’ + GetHeight() + ’” type=”application/x-shockwave-flash” pluginspage=”http://www.macromedia.com/go/getflashplayer”>’);

document.write(’<noembed><p><em>Flash が利用できません。<¥/em><¥/p><¥/noembed>’);

// document.write(’ここに追加’);

document.write(’<¥/object>’);


if(window.innerHeight) // Mozila, Opera の場合

onresize = function() {

document.getElementsByTagName(”embed”)[0].setAttribute(”height”, GetHeight());

}


// -->

</script>

<noscript><p><em>JavaScript が利用できません。</em></p></noscript>


前回と同様の「”」「’」に加え「¥」も半角に置換して下さい。


ちなみに同じ質問には二回までしか答えられないそうです。

これでうまくいきますように……。

id:kabin

質問しても、返事が返ってこなかったので、

大変もうしわけないですが、

キャンセルさせていただきます。

2006/01/21 10:53:13

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

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

トラックバック

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

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

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