0

jquery Mobile での Google アナリティクスの使用に関する以前の質問があり、成功した回答がここに提供されています。ただし、これは 1.9 より前のバージョンの jQuery 用でした。

減価償却された .live イベントが現在の .on イベントに置き換えられるように、誰かがコードを変更するのを手伝ってください。私は試しましたが、成功しませんでした。

JavaScript コードは次のとおりです。

var _gaq = _gaq || [];

$(document).ready(function(e) {
    (function() {
      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + 
          '.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
}); 

$('[data-role=page]').live('pageshow', function (event, ui) {
    try {
        _gaq.push(['_setAccount', 'YOUR_ANALYTICS_ID_GOES_HERE']);

        if ($.mobile.activePage.attr("data-url")) {
            _gaq.push(['_trackPageview', $.mobile.activePage.attr("data-url")]);
        } else {
            _gaq.push(['_trackPageview']);
        }
    } catch(err) {}

});
4

4 に答える 4

3

追跡情報ページで Google が提供するコードは、選択した機能に応じて次のようになります。

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
  _gaq.push(['_setDomainName', 'foo.bar']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

そして、それをオープニングの直後に入れるように言われます<body>。jQuery Mobile (v1.3 でテスト済み) と同じ場所に、次の_trackPageview行を削除してコード ブロックの末尾に簡単なスニペットを追加する必要があります。

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
  _gaq.push(['_setDomainName', 'foo.bar']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

    $(document).on('pageshow', ':jqmData(role="page")', function(evt, data) {
        var url = $(this).jqmData('absUrl');
        try {
            if (url) {
                url = $.mobile.path.parseUrl(url)
                _gaq.push(['_trackPageview', url.pathname + url.search + url.hash]);
            }
            else {
                _gaq.push(['_trackPageview']);
            }
        }
        catch(e) {}
    });
于 2013-09-11T08:28:10.690 に答える
0

開始 body タグの後:

<script>
    (function(i, s, o, g, r, a, m) {
        i['GoogleAnalyticsObject'] = r;
        i[r] = i[r] || function() {
            (i[r].q = i[r].q || []).push(arguments);
        }, i[r].l = 1 * new Date();
        a = s.createElement(o),
        m = s.getElementsByTagName(o)[0];
        a.async = 1;
        a.src = g;
        m.parentNode.insertBefore(a, m);
    })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
    ga('create', 'UA-XXXXXXX-XX', 'exemple.com');
</script>

そして各ページで:

<div data-role="page" ...>
    ...

    <script>
        $(document).off("pageshow", 'div[data-role="page"]').on("pageshow", 'div[data-role="page"]', function() {
            ga('send', 'pageview', $.mobile.path.getLocation());
        });
    </script>
</div>
于 2014-03-20T14:25:49.077 に答える
-1

.live() から .on() への変更を行った後、スクリプトを の最後に移動する必要があり<head>ました。そうしないと、すべてのページビューを取得できません。<body></div><div data-role="page">

于 2013-04-29T00:21:38.507 に答える