- ベストアンサー
スプリクトを外部ファイルから読み込ませる件で質問です。
- スプリクトを外部ファイルから読み込ませる方法について質問です。ファイル名やタグの場所について疑問があります。
- また、スクリプトを外部ファイルに分けて記述することで、ページの読み込み速度の向上やエラーの解決につながるのかについても知りたいです。
- スクリプトを外部ファイルから読み込むことによって、大量のスクリプトを1ページ内に記述する必要がなくなり、停止や遅延の問題が解消される可能性があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
基本的に、スクリプトの量が多いために動作が停止するということはあまり考えられないと思います。 もしスクリプトの処理が多すぎて動作が停止するとしたら、ブラウザが落ちる可能性が高いのではないでしょうか。 スクリプトの量については、外部スクリプトに切り分けたとしても大差ないでしょう。 スクリプトが処理される限りは、すべてのスクリプトが読み出されますし、そうなればどのファイルにスクリプトが記述されていても同じ事と思います。 また、スクリプトの内容として、スクロールをさせるスクリプトがあるようですが、これはページロードが終了してからでないと動作しないと思います。 このスクリプトを動かすのに、< body onLoad="***">のような記述を使っていませんか? だとしたら、すべてのスクリプトは、その量にかかわらずすべて読み出されてから動作を始めているはずですので、そこに含まれるスクリプトの量が、動作に影響を及ぼすということはないと思いますよ。 スクリプトの動作が停止してしまうのは、他のスクリプトの動作が干渉しているせいではないでしょうか。 一定時間ごとに処理を繰り返すスクリプトを複数、独立して起動させるようなケースでは、それぞれのスクリプトの動作ごとに経過時間の管理や処理を別々に行うので、処理が重くなることがあると思います。 あるいは、関数ごとに使っている変数が重複していたりすると、思いもよらないような動作をすることがあります。 また、条件分岐の条件設定などが間違っていたりすることはないでしょうか。 いずれにしても、スクリプトそのものを見直してやらないと、動作が停止してしまう問題点は解消できないと思います。 外部スクリプトファイルに置き換えても、処理内容も動作も変化はないのではないでしょうか。 できれば、スクリプトの内容を提示していただいたほうが、解決が早いと思いますよ。 参考になれば幸いです。
その他の回答 (2)
- Seiryo
- ベストアンサー率13% (27/203)
>ページ内にたくさん記述しすぎたのか、開く途中で、停止してしまうのです どのくらい長いかしりませんがおそらく関係ない?
- cat_2001
- ベストアンサー率58% (35/60)
おはようございます。 index.htm→メインページ sub1.htm→JSを記述してあるページ にしたいのですね。その場合、 <script language="JavaScript" src="ファイル名.js"></script> は、index.htmに記述します。 ※これは、「JSを記述したファイルをこのページに呼び出します」と言う意味のタグなのです。ですので、この「呼び出して実行したい」と言う命令文をJSプログラムの記述してあるページに書いても仕方ないと言う意味は判りますか(このように「こんなもんなんだ」と言う覚え方ではなく、意味を持って覚えれば今後判らなくなってしまうと言う事が無くなりますので、今回を機に「意味で」覚えた方が宜しいですよ)? で、index.htmにJSファイルを呼び出すタグを挿入しましたら、今度はJSプログラムを記述してあるファイルを「○○.js」に拡張子を変更します(今回はsub1.jsになりますね)。 で、そのsub1.js内のJS記述方法は 通常htmlページ内に記述する場合、例えば <script LANGUAGE="JavaScript"> <!-- function pop_win01(){ win=window.open("○○.htm","window1","width=100,height=100,scrollbars=no,location=no,menubar=no,left=0,top=0"); win.moveTo(0,0); } // --> </script> となりますが、外部に出した場合はこの上下4行は必要有りません。 外部に出す場合、そのままダイレクトに function pop_win01(){ win=window.open("○○.htm","window1","width=100,height=100,scrollbars=no,location=no,menubar=no,left=0,top=0"); win.moveTo(0,0); } などと記述します。勿論htmlのタグなどの記述はしてはいけません。あくまでも「JSファイル」なのですから、JSに関する命令文のみを記述します。 >スプリクトを、1ページ内にたくさん記述しすぎたのか、開く途中で、停止してしまうのです、ただ、遅いだけならいいのですが、停止したので これは、長すぎるのではなくて、どこかにミスがあるのではないでしょうか?外部に出す際、いらないものを入れてしまったか、必要な部分を消してしまったか、またはJSがぶつかってしまっている所為でエラーが起こっているか…。 ちなみに、外部に出す際は、「それぞれの命令別にJSファイルを作成し、それぞれ呼び出す」ことをお奨めします。 何故なら、何かエラーが起こった場合、全てのいろいろなJSの何処が間違えているか検証しにくいのと、もし他のページでそのJSの中の一部分のプログラムのみが必要だった場合、そのファイルの上から下まで読み込むので意味の無い負荷がかかり外部に出した意味が無くなる…等の理由があるからです。 長くなってしまいましたが、お判りになりましたでしょうか?また不明な点がありましたら、補足致します。
お礼
回答ありがとうございます、スクリプトのエラーは出ていませんでした、確か。ページ全体がスクロールするタグを追加した時に、停止したのです、除除には、作動してはいるのですが、、、早速、お教えいただいた通り、やってみます。 少しは、はやくなるでしょうか?
補足
回答ありがとうございます。 もともとのタグはこれです。 <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <TITLE>Java-Script</TITLE> </HEAD> <BODY> <body background="a016bcg.gif"> <FORM></FORM> <script language="JavaScript"> <!-- var bkgrnd_offset = 0; var bk_object = eval('document.body'); function bk_scr(maxSize) { bkgrnd_offset = bkgrnd_offset + 1; if (bkgrnd_offset > maxSize) bkgrnd_offset = 0; bk_object.style.backgroundPosition = "0 " + bkgrnd_offset; } var scr_timer = window.setInterval("bk_scr(400)",1); //--> </script> <br><br> </BODY> それで、ご指示いただいたとおり、SUB1に var bkgrnd_offset = 0; var bk_object = eval('document.body'); function bk_scr(maxSize) { bkgrnd_offset = bkgrnd_offset + 1; if (bkgrnd_offset > maxSize) bkgrnd_offset = 0; bk_object.style.backgroundPosition = "0 " + bkgrnd_offset; } var scr_timer = window.setInterval("bk_scr(400)",1); 部分のみを記述し、拡張子も変え、JS に変えました、INDEXのほうには、<script language="JavaScript" src="sub1.js"></script> と記述しました、ただ気になるのは、HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <TITLE>Java-Script</TITLE> </HEAD> <BODY> <body background="a016bcg.gif"> <FORM></FORM の部分は、INDEXの方に記述していいんですよね?<br><br></BODY>は割愛しました。 そして、実行したところ、スプリクとエラーになりました、なぜでしょうか?