ZerOx4Cの日記だったもの

インポートだけしました

闇鍋はしたくないんだ!

部活のサイトをjavascriptを駆使して製作中。明日テストなんだけどね。あははは。
prototype.jsを使ってみたらとっても便利。最初は車輪の再開発精神で頑張ってたけど、もうどうでもいいや。Ajax.Updaterおいしいです。


しかしここで問題発生。
全てのページで使う部分を別htmlファイルに分割して、Ajax.Updaterで流し込んでトップページでのテストは完璧、これで今度見せびらかすことが出来る!と思ったら、トップページ以外で読み込めない。


案の定、原因はこちら。
javascriptの実行パス - ryow.net Blog
やっぱりね!こんな簡単なことd・・・簡単じゃないかも・・・。以下に思いつく対処を羅列。

わぁい、一気に解決だぁ。とは行かず。デメリットもちゃんと書いてありますね。とてつもなくデメリットです。残念。

  • 別フォルダにせずに全てのファイルを一つのフォルダに集める

なんという闇鍋・・・。後輩に継承したら維持できないだろjk・・・。却下。

そうだなぁ、今ピンときたのはコレだなぁ。ちょっと実装をメモ。


http://foo.bar/に

  • foo.js
  • bar.html

があるとして、foo.jsは処理の中でbar.htmlに「./bar.html」と指定してアクセスする。


ここでhttp://foo.bar/hoge/piyo.htmlからfoo.jsを呼んで実行すると、http://foo.bar/bar.htmlではなく、http://foo.bar/hoge/bar.htmlにアクセスしてしまう。
だから、ここでは「../bar.html」を指定してアクセスしたい。


眠いのでこの状況のみ考えて今日は寝ます。上下関係が逆転したときとかは明日考えよう。そうしよう。

function getUrl(url) {
	var baseUrl = "http://foo.bar/"; // 基準URL(リテラル)
	var urlGap = location.href.replace(baseUrl, ""); // 現在のURLから基準URLを削除
	var count = urlGap.length - urlGap.replace("/", ""); // 「/」の数を数える

	// 「/」の数だけ「../」を付けて返す
	for (; 0 < count; count--) {
		url = "../" + url;
	}
	return url;
}

あー眠い。テストしてないけど眠い。そういえば明日テストだよね。寝よう。おやすみ。