单击按钮后如何插入动态跟踪像素?

时间:2018-03-26 09:59:29

标签: javascript analytics pixel tracking matomo

我指的是这个问题已经解决,但只是我正在寻找的解决方案的一部分: How to insert Google Analytics after clicking a button?

我希望在单击按钮后使用数据库中的动态跟踪代码。用例是一个选择插件(适用于Wordpress)。实际的跟踪代码来自数据库。它将由PHP查询,仅在用户提供确认后执行。

这是我的代码,到目前为止:

<script type="text/javascript">

    (function( $ ) {

        $("#button").click(function(){

            var pixel = <?php echo $pixel; ?>;

            $('head').append('<script>' + pixel + '</script>');

        });

    })( jQuery );

</script>

1 个答案:

答案 0 :(得分:0)

在撰写问题并挣扎时,我找到了自己的解决方案:

首先出现的问题是链接问题中提到的脚本标签。如果我使用内联JavaScript,它将被解析,浏览器将抛出错误。但我需要内联JavaScript,因为我需要用PHP查询跟踪像素。所以我必须创建一个像这样的脚本元素:

var script = document.createElement("script");

接下来就是使用特殊字符,如换行符,回车符和引号。因此,可能不仅仅回显跟踪像素,它也会导致解析错误,因为跟踪像素肯定包含换行符和引号。所以在PHP中我需要替换它们。最简单的方法是:

var pixel = '<?php echo (str_replace("\n", "", str_replace("\r", "", str_replace("'", "\"", $pixel)))); ?>';

因此,最终和正在运行的代码将是:

<script type="text/javascript">

    (function( $ ) {

        $("#button").click(function(){

            var pixel = '<?php echo (str_replace("\n", "", str_replace("\r", "", str_replace("'", "\"", $pixel)))); ?>';

            var script = document.createElement("script");

            script.innerHTML = pixel;

            document.body.appendChild(script);

        });

    })( jQuery );

</script>