4

カルーセル用のタグを作成したいのですが、このタグがサイトで使用されている場合にのみ CSS と Javascript ファイルをロードしたいのですが、<body>自分の Web サイトの に追加する場合にのみ動作させることができます。

タグのみをロードする方法はありますか?

私のタグの例 (これは、css および .js ファイルを Web サイトの本文に移動した場合にのみ機能します。

<carousel>
  <div class="row" hide="{$gg.filterApplied || $gg.redeem.redeemInProgress()}">
    <div class="col-sm-12">
      <div class="logos text-center">
        <div class="divider"></div>
        <div data-slick='{"slidesToShow": 4, "slidesToScroll": 4}'>
          <div><h3>1</h3></div>
          <div><h3>2</h3></div>
          <div><h3>3</h3></div>
          <div><h3>4</h3></div>
          <div><h3>5</h3></div>
          <div><h3>6</h3></div>
        </div>
        <div class="divider"></div>
      </div>
    </div>
  </div>

  <style scoped>
    @import url("//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css")
  </style>

  <script src="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.min.js"></script>
  <script>
    var self = this;
    self.mixin(SharedMixin)
  </script>
</carousel>
4

1 に答える 1

1

同様の問題があり、この方法で解決しました。

実行時にリソースをロードするために mixin を使用してタグにメソッドを追加し、css および js ファイルのリストを渡してマウントが起動される前にそれを呼び出します。

jQueryの関数getScriptを利用しています。

loadResources(css, js, callback){
    for(var i = 0; i < css.length; i++){
        if(css[i] !== ''){
            var link = document.createElement('link');
            link.setAttribute("rel", "stylesheet");
            link.setAttribute("type", "text/css");
            link.setAttribute("href", css[i]);
            document.getElementsByTagName("head")[0].appendChild(link);
        }
    }
    var jsProgress = 0;
    for(var j = 0; j < js.length; j++){
        $.getScript(js[j], function () {
            if (++jsProgress == js.length && typeof callback !== 'undefined') callback();
        });
    }
}
于 2017-07-05T12:29:21.297 に答える