0

各画像の画像(バナー)インプレッションを追跡したいと思います。たとえば、1 つの画像がヘッダーにある場合は、ページが読み込まれたときにインプレッションを追跡する必要がありますが、画像がフッターにある場合は、ユーザーがフッターまでスクロールしたときにのみ追跡する必要があります。

PHPで追跡するために1x1ピクセルの画像を実行できますが、JavaScriptも必要だと思います。

要約すると、ユーザーが画像を見たときのみ(ページが読み込まれたときではなく)、画像の印象を追跡したいと考えています。

何か案は ?

注:私はすでに検索しており、質問はページ読み込み時のインプレッションを追跡する方法にのみ答えていますが、これは私が探しているものではありません.

4

4 に答える 4

3

ページが読み込まれたら、javascript を使用して次のことを行います。

  • ページ全体に対する画像の位置を決定する
  • ユーザーのブラウザ ウィンドウのサイズを検出する
  • 画像がビューポートにある場合は、トラッキング スクリプトへの ajax 呼び出しを実行します
  • 画像がビューポートに移動されたかどうかを検出するイベントを追加しonscrollます...そうであれば、ajax追跡スクリプトを実行します。

それはそれについて行う必要があります。トラッキング スクリプトの呼び出しに使用する JavaScript 関数が 1 回しか実行できないことを確認してください (グローバルhas_been_tracked変数を false に設定し、トラッキング関数の実行時にスクリプトでそれを true に切り替えます)。

于 2012-07-03T04:27:49.337 に答える
0

http://patik.com/blog/within-viewport-javascript-and-jquery-plugin/

上記のリンクは、要素(ケースの特定の画像)が完全にビューポート内にあるときにイベントをトリガーするスクリプトへのリンクです。

完全に表示されているフッター画像で、独自のカスタム追跡カウントがある場合は、GoogleAnalyticsまたはAJAXでこれらのイベントを追跡してPHPスクリプトを呼び出すことを選択できます。

于 2012-07-24T12:27:21.980 に答える
0
  • 通話の印象を追跡するデモ機能を見ることができます

  • 軸スクロールトップ+画面ウィンドウの高さ>位置トップ要素を検出します印象を送信するバナー。

<body>
<div style="clear:both; height:1000px;"></div>
<div id="banner" style="clear:both; height:200px; background:#f00;">Test show</div>
<script language="javascript">
var windowPrototype={
    wdHeight:function(){
        var myHeight;
        if( typeof( window.innerWidth ) == 'number' ) {
            //Non-IE
            myHeight = window.innerHeight;
        } else if( document.documentElement && (  document.documentElement.clientHeight ) ) {
            //IE 6+ in 'standards compliant mode'
            myHeight = document.documentElement.clientHeight;
        } else if( document.body && (  document.body.clientHeight ) ) {
            //IE 4 compatible
            myHeight = document.body.clientHeight;
        }
        return myHeight;
    },
    wdWidth:function(){ 
        var myWidth;
        if( typeof( window.innerWidth ) == 'number' ) {
            //Non-IE
            myWidth = window.innerWidth;

        } else if( document.documentElement && ( document.documentElement.clientWidth  ) ) {
            //IE 6+ in 'standards compliant mode'
            myWidth = document.documentElement.clientWidth;

        } else if( document.body && ( document.body.clientWidth  ) ) {
            //IE 4 compatible
            myWidth = document.body.clientWidth;

        }
        return myWidth;
    }
}   
function getScrollTop(){
      var ScrollTop = document.body.scrollTop;
       if (ScrollTop == 0)        
         {
             if (window.pageYOffset)
                 ScrollTop = window.pageYOffset;
             else
                 ScrollTop = (document.body.parentElement) ?     document.body.parentElement.scrollTop : 0;
         }
    return ScrollTop;
}
function getElementTop(Elem) {
    if(document.getElementById) {   
        var elem = document.getElementById(Elem);
    } else if (document.all) {
        var elem = document.all[Elem];
    }
    if(elem!=null){
        yPos = elem.offsetTop;
        tempEl = elem.offsetParent;
        while (tempEl != null) {
            yPos += tempEl.offsetTop;
            tempEl = tempEl.offsetParent;
        }
        return yPos;
    }
    else{
        return 0;
    }
}
function tracking(){                        
    var scrolltop=getScrollTop();
    var advZoneTop=getElementTop('banner');
    if((scrolltop+windowPrototype.wdHeight())>advZoneTop){
            //send code tracking.
        alert('send tracking code');
        if(document.images){
            var img=new Image();
            img.src='http://logging.com/trackingbanner.jpg';
        }
    }else{
        setTimeout('tracking()',100);
    }
}
tracking();
//you can on scroll 
/*
window.onscroll = function () {  
  // called when the window is scrolled.  

        var scrolltop=getScrollTop();
        var advZoneTop=getElementTop('banner');
        if((scrolltop+windowPrototype.wdHeight())>advZoneTop){
                //send code tracking.
            alert('send tracking code');
            if(document.images){
                var img=new Image();
                img.src='http://logging.com/trackingbanner.jpg';
            }
        }
}  */
</script>
</body>
</html>
于 2012-07-03T04:53:29.903 に答える
0

私はあなたの質問を理解しています。しかし、これは非常に複雑な問題です。簡単にするために、「ヘッダー画像のインプレッション数」(PHP で追跡される純粋なインプレッション) + 「広告を表示するスクロールダウンしたユーザーの数」(javascript でのみ追跡) という考え方でこれにアプローチする必要があります。

私は Ben に賛成票を投じました。なぜなら、彼は次の点で 100% 正しいからです。ヘッダーに「インプレッション」を含めないと、気が狂ってしまいます。なぜなら、私のような人はスクリプトを実行しておらず、元のページビューやスクロールを登録しないからです。

追跡の最も効率的な手段は、「インプレッション」および/または「コンバージョン」によるものです。これは、収益性を判断するためにユーザーの OS、ブラウザー、および閲覧習慣に依存しないためです。基本的な PHP と中間の JS を組み合わせた作業が必要です。

于 2012-07-03T04:43:02.867 に答える