【问题标题】:Javascript plugins not working properly with turbolinksJavascript 插件无法与 turbolinks 一起正常工作
【发布时间】:2017-02-16 16:11:21
【问题描述】:

我正在使用分享按钮(javascript 插件)。当我打开一个页面时,它会显示该按钮,但是当我打开其他页面时,它会消失。当我刷新网站时它再次出现。它与 jquery.turbolinks 和没有 turbolinks gem 一起正常工作,但没有它网站非常慢。如何让网站更快? 我的 website,现在插件可以工作了,因为我删除了 turbolinks。

application.js

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require lightbox
//= require_tree .
//= require turbolinks

application.html.erb javascript 插件

<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-588e44a9401a6d9f"></script>
<script type="text/javascript" id="st_insights_js" src="http://w.sharethis.com/button/buttons.js?publisher=630cdfb3-b6c5-4da7-a389-1c7d5340827d"></script>
<script type="text/javascript">stLight.options({publisher: "630cdfb3-b6c5-4da7-a389-1c7d5340827d", doNotHash: false, doNotCopy: false, hashAddressBar: false});</script>

宝石文件

gem 'jquery-turbolinks'
gem 'turbolinks', '~> 5.0.1'

我尝试在 javascript 文件中添加一个插件,但结果相同

$(document).on('turbolinks:load', function(){
  stLight.options({publisher: "630cdfb3-b6c5-4da7-a389-1c7d5340827d",      doNotHash: false, doNotCopy: false, hashAddressBar: false});
});

【问题讨论】:

    标签: javascript ruby-on-rails plugins turbolinks


    【解决方案1】:

    我认为您需要重新初始化按钮,因为不会通过 turbolinks 重新插入buttons.js 脚本...我会尝试这样的事情:

    $(document).on('turbolinks:load', function(){
        stLight.readyRun = false;
        stLight.onReady(); // re-initialization
    });
    

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      你尝试过添加类似的东西吗?

      // turbolinks addthis
      var initAdthis;
      
      initAdthis = function(){
          // Remove all global properties set by addthis, otherwise it won't reinitialize
          for (var i in window) {
              if (/^addthis/.test(i) || /^_at/.test(i)) {
                  delete window[i];
              }
          }
          window.addthis_share = null;
      
          // Finally, load addthis
          $.getScript("http://s7.addthis.com/js/300/addthis_widget.js#pubid=YOUR-PUBLISHER-ID");
      }
      
      // Trigger the function on both jquery's ready event and turbolinks page:change event
      $(document).on('ready page:change', function() {
          initAdthis();
      });
      

      【讨论】:

        猜你喜欢
        • 2014-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-27
        相关资源
        最近更新 更多