[A] 私はすばらしいHighslideスクリプトを使用して (組み込みの AJAX 機能を介して) モーダル ウィンドウを開きます。
[B] そこで、「メイン」はトップ/メイン ページを指すために使用し、「挿入」は「メイン」に挿入されるページを表すために使用します。
[C] Highslide ウィンドウに読み込まれる「挿入」ページには、モーダルが展開されたときに実行する必要がある 4 つの外部スクリプトが含まれています。
</body>
[D] AJAX モードでは Highslide がセクションを無視するため、スクリプトは「挿入」ページの下部 (タグの直前) に含まれてい<head>
ます。
[E] 私のスクリプトは次のようになります。
<script src="/js/jquery-1.7.1.min.js"></script>
<script src="/js/jQuery.thumbfx.js"></script>
<script src="/js/jQuery.easing.js"></script>
<script src="/js/jquery.masonry.min.js"></script>
<script>
$(function(){var $container = $('#IMAGES');$container.imagesLoaded( function(){$container.masonry({itemSelector : '.BLOCK',columnWidth: 200,isFitWidth: true,gutterWidth: 0});});});
</script>
</body>
[F] Highslide は「メイン」ページのヘッドでアクティブ化されます。以下のコードを含めることで、モーダル ウィンドウがフェッチされて展開されるときにこれらのスクリプトをトリガーすることになっています。
hs.Expander.prototype.onAfterExpand = function() {
var scripts = this.content.getElementsByTagName('script');
for (var i = 0; i < scripts.length; i++) {
eval(scripts[i].innerHTML);
}
};
[G] 問題は 2 つあります... 1 つ目:すべてのスクリプトを有効にできないようです。Masonry はこのシナリオで完全に機能しますが、ThumbFX をまったく機能させることができません。 2 番目:この問題を解決しようとして、私は eval() が悪であり、凶暴なゾンビのように避けるべきであることを発見しました。
質問:そのイベントで実行できる、より優れた (より安全な) 関数はありhs.Expander.prototype.onAfterExpand
ますか? おそらく、すべてのスクリプトで実際に機能する関数はありますか?
ありがとうございました。
編集: ところで...私のパスは正しいです.「挿入」ページに直接アクセスすると、すべてのスクリプトが完全に機能します。ただし、「挿入」ページが Highslide によって AJAX 化されている場合は Masonry のみが機能します。再度、感謝します。