我正在使用Driftbot,See Here
并试图根据当前的路由/网址来启用/禁用它。我正在使用REACT-ROUTER。

我可以使用drift.unload()阻止它运行(在我的componentWillMount()函数中),但是无法重新启动它。

我们已经从SO上提取了一些代码,这些代码一直在起作用,除了现在我们需要对其进行修改,以使其在特定页面上被禁用。

这是我们当前正在使用的代码:

let driftbot_function = function() {
      !function() {
        var t;
        if (t = window.driftt = window.drift = window.driftt || [], !t.init) return t.invoked ? void (window.console && console.error && console.error("Drift snippet included twice.")) : (t.invoked = !0,
        t.methods = [ "identify", "config", "track", "reset", "debug", "show", "ping", "page", "hide", "off", "on"],
        t.factory = function(e) {
          return function() {
            var n;
            return n = Array.prototype.slice.call(arguments), n.unshift(e), t.push(n), t;
          };
        }, t.methods.forEach(function(e) {
          t[e] = t.factory(e);
        }), t.load = function(t) {
          var e, n, o, i;
          e = 3e5, i = Math.ceil(new Date() / e) * e, o = document.createElement("script"),
          o.type = "text/javascript", o.async = !0, o.crossorigin = "anonymous", o.src = "https://js.driftt.com/include/" + i + "/" + t + ".js",
          n = document.getElementsByTagName("script")[0], n.parentNode.insertBefore(o, n);
        });
      }();

      drift.SNIPPET_VERSION = '0.3.1';
      drift.load('****__our-key__****');
      drift.page();
    }

    driftbot_function();


当前它在我们componentDidMount()app.js中,因为它是我们的根'/'。我也尝试将其移至index.html中的脚本标签内,但结果相同。

链接到我要禁用的应用程序的一部分时,将禁用它的唯一方法是window.drift.unload().hide.off将不起作用。

回到根目录时,我有命令window.drift.load(),但是现在它是一个空函数,在运行unload()函数之前,该函数已经起作用。

我也尝试过在root.jsapp.js文件中都包含以上链接的Drift Docs中找到的功能,但无济于事

有人有什么想法吗?

最佳答案

shift.page()对我不起作用

我正在使用npm包进行反应
https://github.com/chardmd/react-drift
漂移是我的顶级组件之一

   <Drift appId='123456789' />
    <Favicon url={this.favicon} />
    <Meta
      meta={this.state.data.metaTags}
    />


设置路线规则,然后在漂移UI中将其设置为正常

   componentDidUpdate (prevProps, prevState, snapshot) {

const prevLoc = prevProps.location.pathname
const newLoc = this.props.location.pathname

if (prevLoc !== newLoc) {
 window.drift.reset()

关于javascript - 在单页React App中使用Driftbot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48777908/

10-12 02:17