我必须创建一个网络跟踪像素,如 facebook 像素、glami 像素等

I have to create a web tracking pixel like facebook pixel, glami pixel etc

我需要创建一个网络跟踪像素,如 Facebook 像素、glami 像素等

已尝试 cross-domain 连接并成功:

到目前为止我有:

<script>

let request = obj => {
    return new Promise((resolve, reject) => {
        // ajax code found on internet
    });
};

function test() {
    request({url: 'http://localhost/pixel/test'})
        .then(r => {
            console.log(r); // works
        });
}

</script>

我想要这样的东西:

<!-- {Foo} piXel for {domainName}-->
<script>
(function(p, a, r, a, m, s) {f['FooTrackerObject'] = i;
f[i]=f[i]||function(){(f[i].q=f[i].q||[]).push(arguments)};o=a.createElement(s),
n=a.getElementsByTagName(s)[0];o.async=1;o.src=h;n.parentNode.insertBefore(o,n)
})(window, document, 'script', 'foohost/js/compiled/pt.js', 'foo');

foo('create', 'RandomStringGeneratedForUsers', 'ro');
foo('track', 'PageView');
</script>
<!-- End Foo piXel -->

也是这个link helpful?: https://github.com/dockwa/openpixel

解决了我自己的问题:

    /**
     * @test track('PageView', {foo: 'bar'});
     */
    !function(a, u, d, i, o, t, e, k) {t='PixelTrack';o=[];
        a['track']=(...f)=>{o.push(f)};e=u.createElement('script');
        e.async=true;e.src = d;u.getElementsByTagName('head')[0].appendChild(e);
        e.onload=()=>{a[t](i);o.forEach((item)=>{a[t](item)})};
    }(window, document, 'http://www.domain.cr/js/pixel.js', 'INSERT_YOUR_API_KEY_HERE');

//    (function(a, u, d, i, o, t, e, k) {
//        e = 'PixelTrack';
//        t = [];
//        a['track'] = function(...f){
//            t.push(f);
//        };
//
//        k = document.createElement(d);
//        k.async = true;
//        k.src = i;
//
//        k.onload = function() {
//            a[e](o);
//            t.forEach((item) => {
//                a[e](item)
//            })
//        };
//
//        u.getElementsByTagName("head")[0].appendChild(k);
//
//    })(window, document, 'script', 'http://www.domain.cr/js/pixel.js', 'INSERT_YOUR_API_KEY_HERE');

在 pixel.js 中 laravel 混合了以下内容:

window.PixelTrack = function(params){ console.log('do stuff') }