1

我目前正在尝试设置没有重定向的客户端实验,而不是默认的内容实验 A/B 测试。我想做的就是让一半的访问者禁用页面上两个现有样式表中的一个。

对我来说,使用默认的 A/B 方式执行此操作没有任何意义,因为这样我就必须设置第二个页面,并为我网站上的每个页面禁用样式表。

还有一个运行服务器端实验,但对我来说,这对于我认为应该有点简单的事情来说太重了。

我已经完成了所有 js 设置,我只需要能够告诉页面,当存在给定的变体时,禁用样式表或在 DOM 加载之前不呈现样式表。

我考虑的一件事是,给定某种变化,重定向到同一页面,但附加一个 url 查询参数,就像&stylesheet_disabled=true那时我根本不会在服务器端呈现样式表,但是当我简要查看时,我遇到了重定向循环,但也许有人有更好的方法来编写js。

非常感谢任何帮助。

4

2 回答 2

1

你可以这样做:

<head>
  ...
  <script>
    if (cxApi.chooseVariation() != 1) { // not in the experiment
      document.write('<link href="... />'); // add the stylesheet
    }
  </script>
  ...

document.write在页面仍在加载时使用。

这都是客户端,因此不需要重定向和额外的服务器工作。

于 2013-08-26T03:29:29.627 回答
1

这是我的做法:

<head>
    <script src="//www.google-analytics.com/cx/api.js?experiment=EXPERIMENT_ID"></script>
    <script>
        // Ask Google Analytics which variation to show the visitor.
        var chosenVariation = cxApi.chooseVariation();
        function redirectVariation($variation) {
            var url = window.location.href;
            if ($variation === 1) {
                var queryString = document.location.search;
                if (queryString.indexOf("stylesheet_disabled=true") == -1) {
                    if (Boolean(queryString)) {
                        url += "&stylesheet_disabled=true";
                    } else {
                        url += "?stylesheet_disabled=true";
                    }
                    window.location.href = url;
                }
            }
        }
        redirectVariation(chosenVariation);
    </script>

这仅针对一种不同的变体进行设置,但可以轻松修改为更多。然后,您只需让服务器端的应用程序检测查询字符串参数的存在并执行您喜欢的任何逻辑,在我的情况下不显示样式表。

从理论上讲,这可用于使用 GA 内容实验客户端重定向执行任何类型的服务器端逻辑。希望这对其他人有帮助。

于 2013-08-25T20:51:33.977 回答