複数のJavaScriptファイル

[新着] Webテンプレートを仮オープンしました



0   名前: すずらん : 2006/11/28(火) 23:18  ID:avFaTZ7h
【何をしたいのか】
HTMLファイルから外部JavaScriptファイルを読むのではなく、
外部JavaScriptファイルから別のJavaScriptファイルの関数を使う
別のプログラム言語で言えば
includeのようなことをしたい。 

【現在の状況】
いろいろ調べた結果、
「そのようなものは無い」というのを見たりもしました。
存在する物を使ってどうにかできないかというのを試行錯誤しています。

【備考】
無理やりにでも、
せっかくクラス(モドキ?)を使って構造化プログラムが出来るのに、
継承先のクラスを同じファイルに書くと、
可読性がものすごく落ちると感じてます。
それをどうしても別ファイルに書いて、
親クラスを呼んで継承させたい。

1   名前: m035 ◆Wpzr1YKOiq : 2006/11/28(火) 23:18  [URL]  ID:aiDxbEqs
http://m035.blog61.fc2.com/blog-entry-38.html
参考になるかと。

2   名前: すずらん : 2006/11/28(火) 23:18  ID:crl3CIKG
ありがとうございました。
教えていただいたHPに書いているものをそのままコピペしても出来ませんでした。
けど、意外と簡単に楽に作ることが出来ました。

僕の環境では
JavaScriptファイルの拡張子は何でもいいみたいだったので、
ファイル構造も分かりやすく作ることが出来ました。

C言語のヘッダーファイルモドキを作成して再現しました。

[ javascript.h ]
document.write("<script type='text/javascript' src='./javascript1.js'><\/script>");
document.write("<script type='text/javascript' src='./javascript2.js'><\/script>");

[ index.html ]
・・・・・・
  ・・・・・・
<script language="javascript" src="./javascript.h"></script>
  ・・・・・・
  ・・・・・・

こうすることで、
index.html内でもjavascript1.jsとjavascript2.jsの処理を使えるし、
javascript1.jsからjavascript2.jsの処理も、
その逆も使えます。

なぜ今まで思いつかなかったのか・・・
そして、なぜこれを書いたHPがどこにも無いのか・・・
気になる。
何かいけないことでもしてるのかな?

3   名前: 匿名 : 2006/11/28(火) 23:18  ID:jQkVP7OG
> なぜ今まで思いつかなかったのか・・・
> そして、なぜこれを書いたHPがどこにも無いのか・・・
>>1

>>2の方法は、ヘッダに変更があった場合でもインクルードファイルを書き換えれば一発で済むので、俺もよくやる。
ただ、たまに読み込みに失敗することもある(キャッシュ関連だと思うが、よくわからない)

なお>>1にも書いてあるように、それだけだと外部スクリプトを読み込み終えるまでページ描画が止まってしまう。
ページ描画を続行させながら外部スクリプトを読み込ませる方法を、>>1では模索しているわけだ。

# script要素に必須のtype属性と、非推奨のlanguage属性を混在させる意味が分からないが。

4   名前: すずらん : 2006/11/28(火) 23:18  ID:3HV8qqpQ
>script要素に必須のtype属性と、非推奨のlanguage属性を混在させる意味が分からないが。
多分コピペで作ったからだと・・・w
っていうか仕事中に会社からだったんで・・・w
とりあえずテストなんでうごきゃいいって感じだったんでw
なんかセキュリティに問題があるって見たような機がするけど、
実際何が違うんだろう?

5   名前: 匿名 : 2006/11/28(火) 23:18  ID:7HlzC/hv
ID:jQkVP7OGだけど、

>>4
> なんかセキュリティに問題があるって見たような

script要素の埋め込みでセキュリティ上の問題が生じることはあるが、
type属性かlanguage属性かで問題が生じるとは、少なくとも俺は聞いたことがない。

language="JavaScript1.2"のようにバージョンを指定すれば、そのバージョンで動かすことができる
# 例えばJavaScript 1.2はArrayの挙動が微妙に異なる。

しかし、言語名が標準化されていない等の理由からHTML 4.0で廃止予定(deprecated)となり、
代わりにtype属性でMIME型を指定することが必須になった。
事実上、language属性を使い続けるメリットは何もない。

なお、type="text/javascript"というMIME型は、この春にようやくRFC4329で正式登録されたが、
いきなり廃止(obsolete)のステータスを与えられている。

公式にはtype="application/javascript"、type="application/ecmascript"を使用すべきだが、
例によってIEが追随できてないので使いづらい(まあIEだけではないが)。

あと、>>2はdocument.writeを使う以上、ライブラリ読み込みのタイミングがページ読み込み時に限られるが、
>>1ではどのタイミングでもライブラリを読み込めるよう工夫してある。
用途に応じて使い分けると良いだろう。

一覧へ戻る