私は Lightbox 2 を使用しています。これは、ほぼすべての要件を満たし、最近更新された目立たない高品質の「Lightbox」jQuery プラグインのようです。私が抱えている唯一の問題は、2 つの画像 (クローズと読み込み) が .js ファイルにハードコードされており、スクリプトに引数を渡してこれをオーバーライドする例がないことです。ソースコードであるドキュメントを使用するには、JS が十分ではありません。
(function() {
var $, Lightbox, LightboxOptions;
$ = jQuery;
LightboxOptions = (function() {
function LightboxOptions() {
this.fileLoadingImage = 'images/loading.gif';
this.fileCloseImage = 'images/close.png';
this.resizeDuration = 700;
this.fadeDuration = 500;
this.labelImage = "Image";
this.labelOf = "of";
}
return LightboxOptions;
})();
Lightbox = (function() {
function Lightbox(options) {
this.options = options;
this.album = [];
this.currentImageIndex = void 0;
this.init();
}
[...]
})();
$(function() {
var lightbox, options;
options = new LightboxOptions;
return lightbox = new Lightbox(options);
});
}).call(this);
十分なコードが含まれていない場合は、ファイル全体を GitHubで見ることができます。インクルードされたセクションでは、this.fileLoadingImage
それthis.fileCloseImage
を実行する HTML ファイルへの相対パスが与えられます。たとえば、http://mywebsite.com/
. ただし、CSS、JS、画像などはすべて から提供されhttp://static[number].mywebsitestatic.com/
ます。利用可能な静的 URL の 1 つを .js ファイルにハードコーディングするのではなく、これをより再利用可能なソリューションにして、利用可能なサブドメインまたは親ドメインが変更された場合にこれを更新する必要がないようにしたいと考えています。ファイルも。
このサイトは Django アプリなので、テンプレート コードを使用{{ STATIC_URL }}
して、特定のページの適切な静的ファイル URL を書き出し、それを .js ファイルに渡すだけです。しかし、どのように?たとえば、次のことができるようにしたいと考えています (グローバル変数を避けながら):
<script>
/* instantiate a new version of Lightbox */
newLightbox.fileLoadingImage = "{{ STATIC_URL }}img/lightbox/loading.gif";
newLightbox.fileCloseImage = "{{ STATIC_URL }}img/lightbox/close.gif";
</script>