【问题标题】:Turbolink causing issue to load the 3rd party javascript(zendesk) on next pageTurbolink 导致在下一页加载第 3 方 javascript(zendesk) 的问题
【发布时间】:2016-09-18 08:19:00
【问题描述】:

我在 rails3 上,Turbo-links 导致 zendesk 的链接无法工作。

我使用的是 zendesk 脚本,但没有在下一页加载,然后我使用了提到 here 的脚本。它似乎在 chrome 上运行良好,但在 Firefox 和 Safari 上,它仍然会导致问题。

我在布局中加入了以下几行:

= javascript_include_tag 'zendesk', 'data-turbolinks-track' => true

:javascript
  document.addEventListener('page:change', zendesk_web_widget());

and zendesk_web_widget() is function that loading widget.

我在网上搜索并找到了一些解决方案,但根本不起作用:

Rails 4 turbo-link prevents jQuery scripts from working

https://github.com/turbolinks/turbolinks-classic/issues/166

任何人有任何想法,请告诉我。

【问题讨论】:

    标签: jquery ruby-on-rails turbolinks zendesk


    【解决方案1】:

    您将函数zendesk_web_widget 的返回值传递给侦听器,而不是函数本身。所以不要调用函数(使用()),而是尝试传递函数:

    document.addEventListener('page:change', zendesk_web_widget);
    

    或者,为它制作一个包装函数:

    document.addEventListener('page:change', function () { zendesk_web_widget(); });
    

    既然你使用的是 jQuery,为什么不让代码使用 jQuery。

    $(document).on('page:change', zendesk_web_widget);
    

    【讨论】:

    • 感谢 Ollpu 的回复,但是当我添加 wrapper 函数时,它可以在 Firefox 中运行,但不能在 Chrome 中运行,如果我删除它会反转:(
    • 还要确保函数在初始页面加载时执行,例如$(document).ready(zendesk_web_widget);
    • 感谢@ollpu,它帮助我领先一步。
    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 2014-04-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多