闇鍋はしたくないんだ!
部活のサイトを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; }
あー眠い。テストしてないけど眠い。そういえば明日テストだよね。寝よう。おやすみ。