首页 文章

jQuery Mobile和Google Analytics

提问于
浏览
0

我已经看过很多帖子,解释了如何将Google分析与JQM网站集成,但它似乎并不适用于我 . 我正在使用JQM 1.2版并且有一个包含以下代码的外部javascript文件:

var _gaq = _gaq || []; gaq.push(['_ setAccount','UA-12345678-9']); (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(加油站); })(); $('[data-role = page]') . live('pageshow',function(event,ui){try {hash = location.hash; if(hash && hash.length> 1){ gaq.push([ '_trackPageview',hash.substr(1)]);} else {_gaq.push(['_ trackPageview']);}} catch(err){}});

你能发现为什么这不起作用吗?我是否需要在每个页面上内联加载代码而不是将其放在外部文件中?

2 回答

  • 0

    您必须触发“pageshow”事件的页面视图 .

    见:http://roughlybrilliant.com/jquery_mobile_best_practices#7

    试试这个:

    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) {}
    
        });
    

    如果将上面的代码放在外部文件中,请确保代码将在正确的时间运行(在JQM和页面加载之后)...更好地将此代码附加到主html文件的末尾 .

  • 1
    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) {}
    
        });
    

    警告: live 方法重命名为 on

    可以是一个单独的文件注入到您的(php,jsp)页面

    and 您必须在关闭数据角色页面div之前注入它

    您可以查看jquery移动最佳实践和更具体的信息请参阅:http://roughlybrilliant.com/jquery_mobile_best_practices#7

相关问题